国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

C++中的工廠(chǎng)模式怎么實(shí)現

發(fā)布時(shí)間:2021-09-04 11:56 來(lái)源:億速云 閱讀:0 作者:chen 欄目: 網(wǎng)絡(luò )安全

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

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



具體的代碼如下:

點(diǎn)擊(此處)折疊或打開(kāi)

  1. #include<iostream>


  2. using namespace std;

  3. //工廠(chǎng)模式新增功能并不會(huì )修改原有代碼符合開(kāi)閉原則

  4. //使用多態(tài)實(shí)現

  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) //負責生產(chǎn)boy言外之意就是調用一個(gè)new來(lái)new出內存空間

  43.     {

  44.         p = new boy;

  45.         return p;

  46.     }

  47.     virtual ~boyfactory()

  48.     {

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

  50.         delete p;

  51.     }

  52. };


  53. //后來(lái)新建的woman工廠(chǎng)和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) //負責生產(chǎn)woman言外之意就是調用一個(gè)new來(lái)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.     //生產(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. }

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

c++
成 人影片 免费观看| 猫咪AV成人永久网站在线观看| 中文字幕免费不卡二区| 超碰CAO已满18进入离开| 亚洲电影区图片区小说区 | 成人免费A级毛片免费|