設計模式--六大原則

編程是武學的話,設計模式就是一套內功心法、一套劍法。編程

設計模式的簡單理解:在編程過程當中,咱們對某一問題的在某種狀況下的一種解決方式。設計模式是通過總結和考驗得出的一種公認的廣泛優化的方案,能避免那些重複出現的問題,這其中的好處,在咱們遇到問題和學習使用設計模式的過程當中能夠細細體會。設計模式

設計模式有不少種具體的模式,但這些模式都是針對具體問題的具體實現方式,其中體現的思惟方式和原則是有共同的地方的,這就是設計模式的六大原則。學習

1. 單一職責原則(Single Responsibility Principle)優化

應該有且僅有一個緣由引發類的變動。職責分離,結構清晰,類的複雜度下降;可讀性提升;可維護性提升;變動引發的風險下降。設計

2. 里氏替換原則(Liskov Substitution Principle)對象

定義一:若是對每個類型爲S的對象o1,都有類型爲T的對象o2,使得以S定義的全部程序P,以o2替換全部的對象o1時,程序P的行爲沒有發生變化,那麼類型T就是類型S的子類。接口

定義二:全部引用基類的地方必須能用其子類的對象。子類必須能徹底的替換父類。ip

子類必須徹底實現父類的方法;子類能夠有本身的個性;覆蓋或實現父類的方法時,輸入參數能夠被放大,不然調用父類對象的方法時就不是子類的覆蓋方法;覆蓋或實現父類的方法時,輸出參數能夠被放縮小,返回參數能夠是父類方法返回參數的子類。ci

採用里氏替換原則的目的就是加強程序的健壯性,可擴展性。開發

3. 依賴倒置原則(Dependence Inversion Principle)

包含三層含義:高層模塊不該該依賴低層模塊,二者都應該依賴起抽象;抽象不該該依賴細節;細節應該依賴抽象。

模塊間的依賴經過抽象發生,實現類之間不發生直接的依賴關係,其依賴關係是經過接口或抽象類產生的。接口或抽象類不依賴於實現類,實現類依賴於接口或抽象類。

依賴倒置原則能夠減小類間的耦合性,提升系統的穩定性,下降並行開發引發的風險,提升代碼的可讀性和可維護性。

依賴倒置在小項目中很難體現出來。

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

客戶端不該該依賴他不須要的接口。類間的依賴關係應該創建在最小的接口上。創建單一接口,不要創建臃腫龐大的接口,接口儘可能細化。其包含4層含義:

接口要儘可能小,但要以單一職責原則爲前提;接口高內聚;接口能夠定製服務;接口隔離設計是有限度的。

5. 最少知識原則(Least Knowledge Principle) 或 迪米特法則 (Law of Demeter)

一個對象應該對其餘對象有最少的瞭解。一個類應該對本身須要耦合或調用的類知道的最少,內部如何不須要關心。

這對類的低耦合提出了明確的要求,其包含含義:只和朋友交流(耦合的類);朋友間也是有距離的(低耦合);是本身的就是本身的(若是一個方法放在本類中,既不增長類間關係,也對本類不產生負面影響,那就放置在本類中)

6. 開閉原則 (Open Closed Principle)

對於擴展是開放的(Open for extension),這意味着模塊的行爲是能夠擴展的。當應用的需求改變時,咱們能夠對模塊進行擴展,使其具備知足那些改變的新行爲。也就是說,咱們能夠改變模塊的功能。對於修改是關閉的(Closed for modification)。對模塊行爲進行擴展時,沒必要改動模塊的源代碼或者二進制代碼。

開閉原則是「可複用設計」的基石,是面向對象設計中最重要的原則之一,其它不少的設計原則都是實現開閉原則的一種手段。

 

六大設計原則,單一職責原則、里氏替換原則、依賴倒置原則、接口隔離原則、最小知識原則或迪米特法則、開閉原則。

相關文章
相關標籤/搜索