設計模式六個基本原則

2021-06-20 15:53:38 字數 1570 閱讀 6567

最近學習設計模式,針對所做的筆記,總結下設計模式的六個基本原則。

設計根本的指導原則是提高可維護性和可復用性。這些原則主要有 :

開放封閉

依賴倒轉

黎克特制代換

合成/聚合復用

迪公尺特單一職責

介面隔離原則

一、開放-封閉原則

a、乙個軟體實體應該對擴充套件開放,對修改關閉。 在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。

b、 如何做到既不修改,又可以擴充套件? 解決問題的關鍵在於抽象化。在c++語言裡,可以給出乙個或多個抽象c++類或c++介面,規定出所有的具體類必須提供的方法特徵作為系統設計的抽象層。這個抽象層預見了所有的可能擴充套件,因此,在任何擴充套件情況下都不會改變。這就使得系統的抽象層不需要修改,從而滿足了—對修改關閉。   同時,由於從抽象層匯出乙個或多個新的具體類可以改變系統的行為,因此系統的設計對擴充套件是開放的。

c、開閉原則實際上是「對可變性的封閉原則「:找到乙個系統的可變因素,將之封裝起來。這個原則意味著兩點:   

1) 乙個可變性不應當散落在**的很多角落裡,而應當被封裝到乙個物件裡面。同一種可變性的不同表象意味著同乙個繼承等級結構中的具體子類。   

2) 一種可變性不應當與另一種可變性混合在一起。(所有類圖的繼承結構一般不會超過兩層,不然就意味著將兩種不同的可變性混合在了一起。)  開閉原則是總的原則,其它幾條是開閉原則的手段和工具。

二、依賴倒轉原則

a、依賴倒轉原則講的是:要依賴於抽象,不要信賴於實現。

b、開閉原則是目標,而達到這一目標的手段是依賴倒轉原則。

三、黎克特制代換原則

a、任何基類可以出現的地方,子類一定可以出現。 開閉原則的關鍵步驟是抽象化。而基類與子類的繼承關係就是抽象化的具體體現,黎克特制代換原則是對實現抽象化的具    體步驟的規範 

四、合成/聚合復用原則

a、要盡量使用合成/聚合,而不是繼承關係達到復用的目的。   

b、合成/聚合原則要求我們首先考慮合成/聚合關係,黎克特制代換原則要求在使用繼承時,必須確定這個繼承關係符合一定的條件(繼承是用來封裝變化的;任何基類可以出現的地方,子類一定可以出現。)      

c、合成/聚合原則就是在乙個新的物件裡面使用一些已有的物件,使之成為新物件的一部分;新的物件通過向這些物件的委派達到得復用已有功能的目的。

五、迪公尺特原則

a、乙個軟體實體應當盡可能少的其他實體發生相互作用。模組之間的互動要少。這樣做的結果是當系統的功能需要擴充套件時,會相對更容易地做到對修改的關閉。

b、乙個物件應當對其他物件有盡可能少的了解。 

六、介面隔離原則

a、應當為客戶端提供盡可能小的單獨介面,而不要提供大的總介面。即:使用多個專門的介面比使用單一的總介面要好。   

b、介面隔離原則與迪公尺特都是對乙個軟體實體與其他的軟體實體的通訊限制。迪公尺特原則要求盡可能地限制通訊的寬度和深度,介面隔離原則要求通訊的寬度盡可能地窄。這樣做的結果使乙個軟體系統在功能擴充套件過程當中,不會將修改的壓力傳遞到其他物件。

設計模式基本原則

設計模式基本原則 開 閉 原則 open closed principle,或者ocp 原文 software entities should be open for extension,but closed for modification.解釋 乙個軟體實體應當對擴充套件開放,對修改關閉。黎克特...

設計模式基本原則

1 單一職責原則 類的職責要單一 不要將太多的職責放到同乙個類當中去。eg 資料結構職責類和演算法行為都放在乙個類。我們應該把資料結構和行為分開。2 開閉原則 乙個軟體實體應該對擴充套件開放,對修改關閉。可變性封裝 3 黎克特制代換原則 可以接受基類物件的地方必然要可以接受子類的物件。4 依賴倒轉原...

設計模式基本原則

設計模式基本原則 開 閉 原則 open closed principle,或者ocp 原文 software entities should be open for extension,but closed for modification.解釋 乙個軟體實體應當對擴充套件開放,對修改關閉。黎克特...