溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C++中的工廠模式怎么實現(xiàn)

發(fā)布時間:2021-08-21 09:43:38 來源:億速云 閱讀:107 作者:chen 欄目:網(wǎng)絡(luò)管理

這篇文章主要講解了“C++中的工廠模式怎么實現(xiàn)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C++中的工廠模式怎么實現(xiàn)”吧!

工廠模式中使用了多態(tài)的原理,來將具體實現(xiàn)和接口進(jìn)行有效的解耦合,符合開閉原則和依賴倒置原則
需要新加功能的時候不需要對原有代碼進(jìn)行修改。
抽象類human和抽象類factory就是調(diào)用接口,而實際的生產(chǎn)過程通過factory的子類(如boyfactory)來new
一個具體的human(如:boy)子類然后返回一個human父類的指針完成,如下圖:

C++中的工廠模式怎么實現(xiàn)

具體的代碼如下:

點擊(此處)折疊或打開

  1. #include<iostream>


  2. using namespace std;

  3. //工廠模式新增功能并不會修改原有代碼符合開閉原則

  4. //使用多態(tài)實現(xiàn)

  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) //負(fù)責(zé)生產(chǎn)boy言外之意就是調(diào)用一個new來new出內(nèi)存空間

  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) //負(fù)責(zé)生產(chǎn)woman言外之意就是調(diào)用一個new來new出內(nèi)存空間

  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.     //生產(chǎn)boy

  87.     factory* fa1= new boyfactory;

  88.     human* hm1 = NULL;

  89.     hm1 = fa1->greman();

  90.     hm1->getman();

  91.     delete fa1;

  92.     //生產(chǎn)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++中的工廠模式怎么實現(xiàn)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對C++中的工廠模式怎么實現(xiàn)這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI