iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中的工厂模式怎么实现
  • 578
分享到

C++中的工厂模式怎么实现

2023-06-04 14:06:02 578人浏览 薄情痞子
摘要

这篇文章主要讲解了“c++中的工厂模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中的工厂模式怎么实现”吧!工厂模式中使用了多态的原理,来将具体实现和接口进行有效的解耦合,符

这篇文章主要讲解了“c++中的工厂模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中的工厂模式怎么实现”吧!

工厂模式中使用了多态的原理,来将具体实现和接口进行有效的解耦合,符合开闭原则和依赖倒置原则
需要新加功能的时候不需要对原有代码进行修改。
抽象类human和抽象类factory就是调用接口,而实际的生产过程通过factory的子类(如boyfactory)来new
一个具体的human(如:boy)子类然后返回一个human父类的指针完成,如下图:

C++中的工厂模式怎么实现

具体的代码如下:

点击(此处)折叠或打开

  1. #include<iOStream>

  2. using namespace std;

  3. //工厂模式新增功能并不会修改原有代码符合开闭原则

  4. //使用多态实现

  5. //纯虚拟接口

  6. class human

  7. {

  8.   public:

  9.     virtual void getman(void) = 0;

  10.     virtual ~human()

  11.     {

  12.         //cout<<"4:"<<endl;

  13.     }

  14. };

  15. class factory

  16. {

  17. public:

  18.     virtual human* greman(void) = 0;

  19.     virtual ~factory()

  20.     {

  21.        // cout<<"3:"<<endl;

  22.     }

  23. };

  24. /////boy

  25. class boy:public human

  26. {

  27. public:

  28.     virtual void getman(void)

  29.     {

  30.         cout<<"I'M BOY!"<<endl;

  31.     }

  32.      virtual ~boy()

  33.     {

  34.       // cout<<"2:"<<endl;

  35.     }

  36. };

  37. class boyfactory:public factory

  38. {

  39. private:

  40.     boy* p;

  41. public:

  42.     virtual human* greman(void) //负责生产boy言外之意就是调用一个new来new出内存空间

  43.     {

  44.         p = new boy;

  45.         return p;

  46.     }

  47.     virtual ~boyfactory()

  48.     {

  49.        // cout<<"1:"<<endl;

  50.         delete p;

  51.     }

  52. };

  53. //后来新建的woman工厂和woman定义

  54. //////////////woman

  55. class woman:public human

  56. {

  57. public:

  58.     virtual void getman(void)

  59.     {

  60.         cout<<"I'M woman!"<<endl;

  61.     }

  62.      virtual ~woman()

  63.     {

  64.      // cout<<"5:"<<endl;

  65.     }

  66. };

  67. class womanfactory:public factory

  68. {

  69. private:

  70.     woman* p;

  71. public:

  72.     virtual human* greman(void) //负责生产woman言外之意就是调用一个new来new出内存空间

  73.     {

  74.         p = new woman;

  75.         return p;

  76.     }

  77.     virtual ~womanfactory()

  78.     {

  79.         //cout<<"6:"<<endl;

  80.         delete p;

  81.     }

  82. };

  83. ///////////////////////

  84. int main(void)

  85. {

  86.     //生产boy

  87.     factory* fa1= new boyfactory;

  88.     human* hm1 = NULL;

  89.     hm1 = fa1->greman();

  90.     hm1->getman();

  91.     delete fa1;

  92.     //生产woman

  93.     factory* fa2= new womanfactory;

  94.     human* hm2 = NULL;

  95.     hm2 = fa2->greman();

  96.     hm2->getman();

  97.     delete fa2;

  98.     cout<<"hello!"<<endl;

  99. }

感谢各位的阅读,以上就是“C++中的工厂模式怎么实现”的内容了,经过本文的学习后,相信大家对C++中的工厂模式怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: C++中的工厂模式怎么实现

本文链接: https://www.lsjlt.com/news/238123.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c语言怎么计算字符串长度
    在C语言中,可以使用内置的strlen()函数来计算字符串的长度。该函数位于string.h头文件中。以下是一个示例代码: #inc...
    99+
    2024-05-15
    c语言
  • c语言怎么判断三个数的大小
    可以通过比较三个数之间的大小关系来判断它们的大小。以下是一个示例代码: #include <stdio.h> int ...
    99+
    2024-05-15
    c语言
  • c++排序函数sort怎么使用
    在C++中,使用sort函数对容器中的元素进行排序,可以按照默认的升序排列,也可以自定义排序规则。 下面是一个简单的例子,对一个ve...
    99+
    2024-05-15
    c++
  • c++中string的compare函数怎么使用
    在C++中,可以使用string的compare函数来比较两个string对象的大小。该函数的原型如下: int compare(c...
    99+
    2024-05-15
    c++
  • c++中string的compare函数有什么用
    c++中string的compare函数用于比较两个字符串的大小关系。该函数返回一个整数值,表示两个字符串的比较结果。 具体来说,如...
    99+
    2024-05-15
    c++
  • c++中print函数的功能有哪些
    在C++中,通常使用std::cout来进行输出操作,而不是使用print函数。std::cout是C++标准库中的一个输出流对象,...
    99+
    2024-05-15
    c++
  • c语言数据结构怎么使用
    在C语言中,数据结构可以通过定义结构体来实现。以下是一些常见的数据结构的使用方法示例: 链表: #include <std...
    99+
    2024-05-15
    c语言
  • c++中print函数的用法是什么
    在C++中没有内置的print函数,但可以使用cout来输出内容到控制台。cout是C++标准库中的一个输出流对象,可以使用<...
    99+
    2024-05-15
    c++
  • c++中concept的用法是什么
    在C++20中,Concept是一种新的语言特性,用于定义类型要求和约束。Concept可以被用来约束函数模板、类模板和普通函数的参...
    99+
    2024-05-15
    c++
  • c++中concept的作用是什么
    在C++中,concept的作用是定义一种通用的约束,用于限制模板参数的类型范围。通过使用concept,可以在编译时对模板参数进行...
    99+
    2024-05-15
    c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作