程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 設計模式與面向對象小結

設計模式與面向對象小結

編輯:C++入門知識

一進CSDN的網站,就看見“機器人與關鍵技術解析”的文章,足見技術發展是相當的讓人興奮的。而我此刻要說的,還是那古老的設計模式及面向對象編程,僅是我自己平常的一些總結。無關當下科技發展,只為給自己點上一盞小燈,少在黑夜走彎路。

一、設計模式的六大原則 :

1、開閉原則(Open Close Principle)

開閉原則就是說對擴展開放,對修改關閉。在程序需要進行拓展的時候,不能去修改原有的代碼,實現一個熱插拔的效果。所以一句話概括就是:為了使程序的擴展性好,易於維護和升級。想要達到這樣的效果,我們需要使用接口和抽象類,後面的具體設計中我們會提到這點。

2、裡氏代換原則(Liskov Substitution Principle)

裡氏代換原則(Liskov Substitution Principle LSP)面向對象設計的基本原則之一。 裡氏代換原則中說,任何基類可以出現的地方,子類一定可以出現。 LSP是繼承復用的基石,只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為。裡氏代換原則是對“開-閉”原則的補充。實現“開-閉”原則的關鍵步驟就是抽象化。而基類與子類的繼承關系就是抽象化的具體實現,所以裡氏代換原則是對實現抽象化的具體步驟的規范。

3、依賴倒轉原則(Dependence Inversion Principle)

這個是開閉原則的基礎,具體內容:針對接口編程,依賴於抽象而不依賴於具體。

4、接口隔離原則(Interface Segregation Principle)

這個原則的意思是:使用多個隔離的接口,比使用單個接口要好。還是一個降低類之間的耦合度的意思,從這兒我們看出,其實設計模式就是一個軟件的設計思想,從大型軟件架構出發,為了升級和維護方便。所以上文中多次出現:降低依賴,降低耦合。

5、迪米特法則(最少知道原則)(Demeter Principle)

為什麼叫最少知道原則,就是說:一個實體應當盡量少的與其他實體之間發生相互作用,使得系統功能模塊相對獨立。

6、合成復用原則(Composite Reuse Principle)

原則是盡量使用合成/聚合的方式,而不是使用繼承。

二、面向對象的開發范式

1、創建模式

創建模式封裝了實例化的過程,客戶對象不再關心這些創建的細節:應該使用哪個具體類,如何初始化和組裝實例。這樣,也為實例化提供了很大的靈活性:可以使用克隆方式加快創建過程和簡化創建細節,也可以根據配置確定實例化的具體類型,還可以根據需求創建單例對象。

2、模板方式模式

封裝了那些不變的方式步驟,把變化那部分交給子類去封裝,對使用者隱藏了具體的子類型。

3、裝飾器模式

裝飾器模式隱藏了被裝飾的對象,並且,由於裝飾對象與被裝飾對象具有相同的接口,客戶在使用被裝飾過的對象和未裝飾過的對象時,不需要對它們區別對待,隱藏了裝飾器的類型。

4、代理模式

和裝飾模式一樣,隱藏了被代理對象(目標對象),也實現了代理類型的隱藏。

5、適配器模式

隱藏了被適配的接口/類,客戶對象並不知道請求會轉發給被適配的對象。

6、外觀模式

隱藏了子系統,封裝了外觀與子系統之間的復雜交互。(最少知識原則,比如:CPU,MEMERY,DISK 電腦啟動)。

7、組合模式

實現了葉子類與分支子類的隱藏,客戶對象操作葉子對象和分支對象不需要區分對待。(樹形結構)。

8、策略模式

把獨立變化的部分抽象出來,變化的部分是策略,不變的部分是Context。(加,減,乘,除算法)。

9、狀態模式

每一個狀態都封裝了與一個特定狀態相關的行為,Context隱藏了狀態接口和實現,客戶接口不知道它的存在。(就像QQ的狀態變化及相關功能一樣)。

10、觀察者模式

不同的觀察者對變化的處理是不同的,把這些變化封裝在不同的觀察者類型裡,由於它們有相同的接口,觀察者就能獨立於主題而變化。另外如果為主題也抽象了接口,這樣觀察者和主題兩方面就能獨立變化與重用,而不會影響對方。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved