設計模式的六大原則

2021-09-02 08:03:25 字數 1399 閱讀 8144

一,單一職責原則: 乙個類只實現乙個功能

所謂職責擴散,就是因為某種原因,職責p被分化為粒度更細的職責p1和p2。

在職責擴散到我們無法控制的程度之前,立刻對**進行重構。以契合單一職責原則

二,黎克特制替換原則通俗的來講就是:子類可以擴充套件父類的功能,但不能改變父類原有的功能。它包含以下4層含義:

子類可以實現父類的抽象方法,但不能覆蓋父類的非抽象方法。

子類中可以增加自己特有的方法。

當子類的方法過載父類的方法時,方法的前置條件(即方法的形參)要比父類方法的輸入引數更寬鬆。

當子類的方法實現父類的抽象方法時,方法的後置條件(即方法的返回值)要比父類更嚴格。

看上去很不可思議,因為我們會發現在自己程式設計中常常會違反黎克特制替換原則,程式照樣跑的好好的。所以大家都會產生這樣的疑問,假如我非要不遵循黎克特制替換原則會有什麼後果?

後果就是:你寫的**出問題的機率將會大大增加。

三,依賴倒置原則

定義:高層模組不應該依賴低層模組,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象。

在實際程式設計中,我們一般需要做到如下3點:

低層模組盡量都要有抽象類或介面,或者兩者都有。

變數的宣告型別盡量是抽象類或介面。

使用繼承時遵循黎克特制替換原則。

依賴倒置原則的核心就是要我們面向介面程式設計,理解了面向介面程式設計,也就理解了依賴倒置。

簡單點就是: 給高層類的方法傳入引數時,不傳入類,而傳入介面(將具體的引數抽象到介面級別)

四,介面隔離原則

定義:客戶端不應該依賴它不需要的介面;乙個類對另乙個類的依賴應該建立在最小的介面上。

採用介面隔離原則對介面進行約束時,要注意以下幾點:

介面盡量小,但是要有限度。對介面進行細化可以提高程式設計靈活性是不掙的事實,但是如果過小,則會造成介面數量過多,使設計複雜化。所以一定要適度。

為依賴介面的類定**務,只暴露給呼叫的類它需要的方法,它不需要的方法則隱藏起來。只有專注地為乙個模組提供定**務,才能建立最小的依賴關係。

提高內聚,減少對外互動。使介面用最少的方法去完成最多的事情

簡單的說就是: 盡量細化介面,但注意分寸

五,迪公尺特法則(最少知識原則)

定義:乙個物件應該對其他物件保持最少的了解。

在採用迪公尺特法則時要反覆權衡,既做到結構清晰,又要高內聚低耦合。

六,開閉原則

定義:乙個軟體實體如類、模組和函式應該對擴充套件開放,對修改關閉

簡單的說就是: 用抽象構建框架,用實現擴充套件細節.

單一職責原則告訴我們實現類要職責單一;

黎克特制替換原則告訴我們不要破壞繼承體系;

依賴倒置原則告訴我們要面向介面程式設計;

介面隔離原則告訴我們在設計介面的時候要精簡單一;

迪公尺特法則告訴我們要降低耦合。

開閉原則是總綱,他告訴我們要對擴充套件開放,對修改關閉。

設計模式六大原則

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

設計模式六大原則

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

設計模式六大原則

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