千家信息网

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

发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,这篇文章主要讲解了"C++中的工厂模式怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++中的工厂模式怎么实现"吧!工厂模式中使用了多态的原理
千家信息网最后更新 2024年11月19日C++中的工厂模式怎么实现

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

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



具体的代码如下:

点击(此处)折叠或打开

  1. #include


  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:"<

  13. }

  14. };


  15. class factory

  16. {

  17. public:

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

  19. virtual ~factory()

  20. {

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

  22. }

  23. };


  24. /////boy

  25. class boy:public human

  26. {

  27. public:

  28. virtual void getman(void)

  29. {

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

  31. }

  32. virtual ~boy()

  33. {

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

  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:"<

  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!"<

  61. }

  62. virtual ~woman()

  63. {

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

  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:"<

  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!"<

  99. }

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

0