设计模式的六大原则(个人笔记)
一、單一職責原則
單一職責原則:一個類只負責一個功能領域中的相應職責,或者可以定義為:就一個類而言,應該只有一個?引起它變化的原因。
就是說一個類不能太”累“,一個類承擔的責任越多,它被復用的肯能性就越小,而且一個類承擔的責任過多,就相當于將這些職責耦合在一起,
當其中一個職責變化時,可能會影響到其他職責的運作,因此要將這些職責分離,封裝在不同的類中。
單一職責的原則就是:實現高內聚、低耦合的指導方針,它是簡單但是又難運用的原則,需要設計人員發現類的不同職責將其分離,而發現類的多重職責需要設計人員具有較強的
分析能力和設計能力和相關實踐經驗。
二、開閉原則
開閉原則:一個軟件實體可以指一個應當對擴展開放,對修改關閉。即軟件實體應盡量在不修改原有代碼的情況下進行擴展。
在開閉原則的定義中,一個軟件實體可以指一個軟件模塊,一個由多個類組成的局部結構或一個獨立的類。
為了滿足開閉原則,需要對系統進行抽象設計,抽象化是開閉原則的關鍵。可以定義一個相對穩定的抽象層,在通過具體類來進行擴展,
如果有需要改動系統的行為,無需對抽象層進行任何改動,只需要增加新的具體類來實現新的業務功能即可,實現在不修改已有代碼的基礎上擴展系統的功能,達到開閉原則的要求。
三、里氏替換?原則
里氏替換原則:所有引用基類的地方必須能透明地使用其子類的對象。
里氏替換原則告訴我們,在軟件中將一個基類對象替換成它的子類對象,程序將不會產生任何錯誤和異常,反過來則不成立。
如果一個軟件實體使用的是一個子類對象的話,那么它不一定能夠使用基類對象。例如:我喜歡動物,那我一定喜歡狗,因為狗是動物的子類;
但是我喜歡狗,不能斷定我喜歡動物。
里氏替換原則是實現開閉原則的重要方式之一,由于使用基類對象的地方都可以使用子類對象,因此在程序中盡量使用基類類型來定義對象 ,
而在運行時再確定其子類類型,用子類對象來替換父類對象。
四、依賴倒置原則
依賴倒置原則:抽象不應該依賴于細節,細節應當依賴于抽象。
如果說開閉原則是面向對象設計的目標的話 ,那么依賴倒置原則就是面向對象設計的主要實現機制之一,它是系統抽象化的具體實現。
依賴倒置原則要求我們在程序代碼中傳遞參數時或在關聯關系中,盡量引用高層次的抽象層類,即使用接口和抽象類進行變量類型聲明、方法返回類型聲明,
以及數據類型的轉換等,而不要用具體類來做這些事情。為了確保該原則的應用,一個具體類應當實現接口和抽象類中聲明過的方法,而不要給多余的方法,
否則將無法調用到子類中增加的新方法。
在實現依賴倒置原則時,我們需要針對抽象層編程,而將具體類的對象通過依賴注入的方式注入到其他對象中,依賴注入是指當一個對象要與其他對象發生依賴關系時,
通過抽象來注入所依賴的對象。常用的注入方式有三種,分別是:構造注入,設值注入和接口注入。構造注入是指通過構造函數來傳入具體類的對象,設值注入是指通過Setter
方法來傳入具體類的對象,而接口注入是指通過在接口中聲明的業務方法來傳入具體類的對象。這些方法在定義時使用的是抽象類型,在運行時再傳入具體類型的對象,由子類對象覆蓋父類對象。
五、接口隔離原則
每一個接口應該承擔一種相對獨立的角色,不干不該干的事,該干的事都要干。
接口僅僅提供客戶端需要的行為,客戶端不需要的行為則隱藏起來,應當為客戶端提供盡可能小的單獨的接口,而不要提供大的接口。
但是接口不能太小,如果太小會導致系統中接口泛濫,不利于維護。
六、迪米特法則
迪米特法則:一個軟件實體應當盡可能少的與其他實體發生相互作用。
迪米特法則可降低系統的耦合度,使類與類之間保持松散的耦合關系。
迪米特法則還有幾種定義形式,包括:不要和“陌生人”說話,只與你的直接朋友通信等。
其朋友包括以及幾類:
(1)當前對象本身
(2)以參數形式傳入到當前對象方法中的對象
(3)當前對象的成員對象
(4)如果當前對象的成員對象是一個集合,那么集合中的元素也是朋友
(5)當前對象所創的對象
任何一個對象,如果不滿足上面的條件之一,就是當前對象的“朋友”,否則就是“陌生人”。
迪米特法則要求我們在設計系統時,應該盡量減少對象之間的交互,如果兩個對象之間不必彼此直接通信,那么這兩個對象就不應當發生任何直接的相互作用,
如果其中的一個對象需要調用另一個對象的某一個方法的話,可以通過第三者轉發這個調用。簡而言之,就是通過引入一個合理的第三者來降低現有對象之間的耦合度。
在將迪米特法則運用到系統設計中時,要注意下面的幾點:在類的劃分上,應當盡量創建松耦合的類,類之間的耦合度越低,就越有利于復用,一個處在松耦合中的類一旦被修改,
不會對關聯的類造成太大波及;在類的結構設計上,每一個類都應當盡量降低其成員變量和成員函數的訪問權限;
在類的設計上,只要有可能,一個類型應當設計成不變類;在對其他類的引用上,一個對象對其他對象的引用應當降到最低。
?
轉載于:https://www.cnblogs.com/BounceGuo/p/9724969.html
總結
以上是生活随笔為你收集整理的设计模式的六大原则(个人笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。

- 上一篇: 邓俊辉数据结构学习-3-栈
- 下一篇: 如何删除VS2015中的OpenCV的配