91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

C++中的工廠模式怎么實現

發布時間:2021-08-21 09:43:38 來源:億速云 閱讀:107 作者:chen 欄目:網絡管理

這篇文章主要講解了“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++中的工廠模式怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

卢氏县| 米林县| 龙州县| 晋州市| 资源县| 龙里县| 花莲县| 通河县| 自治县| 华坪县| 永福县| 张家港市| 东丽区| 石渠县| 泰兴市| 措勤县| 梅河口市| 伊宁县| 乌兰浩特市| 财经| 溧阳市| 大同县| 南宁市| 家居| 珲春市| 柘城县| 原阳县| 体育| 剑河县| 大方县| 商南县| 兴安县| 松溪县| 沈阳市| 两当县| 运城市| 黄平县| 海宁市| 刚察县| 虞城县| 温宿县|