設計模式六大原則

2021-09-22 08:15:25 字數 1957 閱讀 5840

設計模式六大原則

1. 單一職責原則(single responsibility principle - srp)

理解:對於乙個類而言,應該僅有乙個引起它變化的原因。說白了就是,不同的類具備不同的職責,各施其責。

應用:當我們做系統設計時,如果發現有乙個類擁有了兩種的職責,那就問自己乙個問題:可以將這個類分成兩個類嗎?

2. 開放封閉原則(open closed principle - ocp)

理解:對擴充套件開放,對修改封閉。換句話說,可以去擴充套件類,但不要去修改類。

應用:當需求有改動,要修改**了,此時您要做的是,盡量用繼承或組合的方式來擴充套件類的功能,而不是直接修改類的**。當然,如果能夠確保對整體架構不會產生任何影響,那麼也沒必要搞得那麼複雜了,直接改這個類吧。

3. 黎克特制替換原則(liskov substitution principle - lsp)

理解:使用基類的指標或引用的函式,必須是在不知情的情況下,能夠使用派生類的物件。父類能夠替換子類,但子類不一定能替換父類。也就是說,在**中可以將父類全部替換為子類,程式不會報錯,也不會在執行時出現任何異常,但反過來卻不一定成立。

應用:在繼承類時,務必重寫(override)父類中所有的方法,尤其需要注意父類的 protected 方法(它們往往是讓您重寫的),子類盡量不要暴露自己的 public 方法供外界呼叫。

4. 最少知識原則(least knowledge principle - lkp)

理解:儘量減少物件之間的互動,從而減小類之間的耦合。簡言之,一定要做到:低耦合,高內聚。

應用:在做系統設計時,不要讓乙個類依賴於太多的其他類,需盡量減小依賴關係。

5. 介面隔離原則(inte***ce segregation principle - isp)

理解:不要對外暴露沒有實際意義的介面。

應用:當需要對外暴露介面時,需要再三斟酌,如果真的沒有必要對外提供的,就刪了吧。

6. 依賴倒置原則(dependence inversion principle - dip)

理解:應該面向介面程式設計,不應該面向實現類程式設計。面向實現類程式設計,相當於就事論事,那是正向依賴(正常人思維);面向介面程式設計,相當於通過事物表象來看本質,那是反向依賴,即依賴倒置(程式設計師思維)。

應用:並不是說,所有的類都要有乙個對應的介面,而是說,如果有介面,那就盡量使用介面來程式設計吧。

補充設計原則

組合/聚合復用原則(composition/aggregation reuse principle - carp)

當要擴充套件類的功能時,優先考慮使用組合,而不是繼承。這條原則在 23 種經典設計模式中頻繁使用,如:**模式、裝飾模式、介面卡模式等。

無環依賴原則(acyclic dependencies principle - adp)

當 a 模組依賴於 b 模組,b 模組依賴於 c 模組,c 依賴於 a 模組,此時將出現迴圈依賴。在設計中應該避免這個問題,可通過引入「中介者模式」解決該問題。

共同封裝原則(common closure principle - ccp)

應該將易變的類放在同乙個包裡,將變化隔離出來。

共同重用原則(common reuse principle - crp)

如果重用了包中的乙個類,那麼也就相當於重用了包中的所有類,我們要盡可能減小包的大小。

好萊塢原則(hollywood principle - hp)

好萊塢明星的經紀人一般都很忙,他們不想被打擾,往往會說:don』t call me, i』ll call you. 翻譯為:不要聯絡我,我會聯絡你。對應於軟體設計而言,最著名的就是「控制反轉」(或稱為「依賴注入」),我們不需要在**中主動的建立物件,而是由容器幫我們來建立並管理這些物件。

原文:

設計模式六大原則

0.05 設計模式 設計模式 規範 筆記 大話設計模式 物件導向的關鍵在於封裝,封裝好了才能很好的復用,達到單一職責和開放擴充套件 封閉更改的效果。1 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因.增加功能不應該修改已有的 避免修改出錯及重複測試.如果你能夠想到多於乙個的動機去改變乙個類...

設計模式六大原則

0.05 設計模式 設計模式 規範 筆記 大話設計模式 物件導向的關鍵在於封裝,封裝好了才能很好的復用,達到單一職責和開放擴充套件 封閉更改的效果。1 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因.增加功能不應該修改已有的 避免修改出錯及重複測試.如果你能夠想到多於乙個的動機去改變乙個類...

設計模式六大原則

參考文章 單一職責原則 single responsibility principle,srp 乙個類只負責乙個功能領域中的相應職責,或者可以定義為 就乙個類而言,應該只有乙個引起它變化的原因。開閉原則 open closed principle,ocp 乙個軟體實體應當對擴充套件開放,對修改關閉。...