日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C++設計模式的基本原則

設計模式基本原則

創(chuàng)新互聯(lián)專注于阿城網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供阿城營銷型網(wǎng)站建設,阿城網(wǎng)站制作、阿城網(wǎng)頁設計、阿城網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務,打造阿城網(wǎng)絡公司原創(chuàng)品牌,更為您提供阿城網(wǎng)站排名全網(wǎng)營銷落地服務。

最終目的,高內(nèi)聚,低耦合

開放封閉原則類的改動是通過增加代碼進行的,不是修改源代碼

銀行類案例代碼

 
 
 
  1. #include
  2. using namespace std;
  3. class BankWorker
  4. {
  5. public:
  6.     void save()
  7.     {
  8.         cout << "存款" << endl;
  9.     }
  10.     void moveM()
  11.     {
  12.         cout << "取款" << endl;
  13.     }
  14.     void jiaofei()
  15.     {
  16.         cout << "繳費" << endl;
  17.     }
  18. };
  19. class AbBankWorker
  20. {
  21. public:
  22.     virtual void dothing() = 0;
  23. };
  24. class SaveBanker :public AbBankWorker
  25. {
  26. public:
  27.     virtual  void dothing()
  28.     {
  29.         cout << "存款" << endl;
  30.     }
  31. };
  32. class MoveBanker :public AbBankWorker
  33. {
  34. public:
  35.     virtual  void dothing()
  36.     {
  37.         cout << "取款" << endl;
  38.     }
  39. };
  40. class SaveBanker :public AbBankWorker
  41. {
  42. public:
  43.     virtual  void dothing()
  44.     {
  45.         cout << "繳費款" << endl;
  46.     }
  47. };
  48. void main11()
  49. {
  50.     BankWorker*bw = new BankWorker;
  51.     bw->jiaofei();
  52.     bw->moveM();
  53.     bw->save();
  54.     cout << "hello..." << endl;
  55.     system("pause");
  56.     return;
  57.     
  58. }
  59. void main22()
  60. {
  61.     AbBankWorker*bw = NULL;
  62.         bw=new MoveBanker;
  63.         bw->dothing();
  64.         delete bw;
  65.     return;
  66. }
  67. void main()
  68. {
  69.     main22();
  70.     
  71.     system("pause");
  72.     return;
  73. }

單一職責原則類的職責要單一,對外只提供一種功能,而引起內(nèi)變化的原因都應該只有一個

依賴倒置原則依賴于抽象接口,不要依賴具體的實現(xiàn)類,也就是針對接口編程

 
 
 
  1. #include
  2. using namespace std;
  3. class HardDisk
  4. {public:
  5.     virtual void work();
  6. };
  7. class Memory
  8. {
  9. public:
  10.     virtual void work();
  11. };
  12. class Cpu
  13. {
  14. public:
  15.     virtual void work();
  16. };
  17. class ComPuter
  18. {
  19. public:
  20.     ComPuter(HardDisk*m_handdisk, Memory*m_memory, Cpu*m_cpu)
  21.     {
  22.         m_handdisk = handdisk;
  23.         m_memory = memory;
  24.         m_cpu = cpu;
  25.     }
  26. public:
  27.     void work()
  28.     {
  29.         m_handdisk->work();
  30.         m_memory->work();
  31.         m_cpu->work();
  32.     }
  33. private:
  34.     HardDisk*m_handdisk;
  35.         Memory*m_memory;
  36.         Cpu*m_cpu;
  37. };
  38. class InterCpu :public Cpu
  39. {
  40. public:
  41.     void work()
  42.     {
  43.         cout << "我是因特爾廠家" << endl;
  44.     }
  45. };
  46. class XSDisk :public HardDisk
  47. {
  48. public:
  49.     void work()
  50.     {
  51.         cout << "我是西數(shù)硬盤廠家" << endl;
  52.     }
  53. };
  54. class JSDMem :public Memory
  55. {
  56. public:
  57.     void work()
  58.     {
  59.         cout << "我是JSDMem廠家" << endl;
  60.     }
  61. };
  62. void main()
  63. {
  64.     HardDisk*handdisk=NULL;
  65.     Memory*memory=NULL;
  66.     Cpu*cpu=NULL;
  67.     handdisk = new XSDisk;
  68.     memory= new JSDMem;
  69.     cpu = new InterCpu;
  70.     ComPuter*mycomputer = new ComPuter(harddisk, memory, cpu);
  71.     mycomputer->work();
  72.     delete mycomputer;
  73.     delete cpu;
  74.     delete  memory;
  75.     delete  harddisk;
  76.     cout << "hello" << endl;
  77.     system("pause");
  78.     return;
  79. }

接口隔離原則不應該強迫客戶的程序依賴他們不需要的接口方法,一個接口應該是提供一種對外功能,不應該把所有的操作都封裝到一個接口中去

里氏替換原則任何抽象類出現(xiàn)的地方都可以用它的實現(xiàn)類進行替換,實際就是虛擬機智語言級別,實現(xiàn)面向對象功能

優(yōu)先使用組合而不是繼承原則如果使用繼承,會導致復位的任何變化,都可能影響此類的行為,如果使用對象組合,就降低了這種依賴關系

迪米特法則一個對象應當對其他對象盡可能少的了解,從而降低各個對象之間的耦合,提高系統(tǒng)的可維護性。例如,在一個程序中,各個模塊之間相互調(diào)用時,通常會提供一個統(tǒng)一的接口來實現(xiàn),這樣其他模塊不需要了解另外一個模塊的內(nèi)部實現(xiàn)細節(jié),這樣當一個模塊內(nèi)部的實現(xiàn)發(fā)生改變的時候,不會影響其他模塊的使用黑盒原理。


本文標題:C++設計模式的基本原則
文章路徑:http://www.dlmjj.cn/article/djesedj.html