設計模式與面向對象小結

      一進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、觀察者模式

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章