第4章 「開 閉原則」 ocp 筆記

2021-08-31 05:55:53 字數 1051 閱讀 3001

[b]開閉原則[/b]指的是乙個軟體實體應該對擴充套件開放,對修改關閉。

software entities should be open for extension,but closed for modification.

滿足「開-閉原則」的設計可以給軟體體統2個無可比擬的優越性

1、通過擴充套件已有的軟體系統,可以提供新的行為,以滿足軟體的新需求,是變化中的軟體系統有一定的適應性和靈活性。

2、已有的軟體模組,特別是最重要的抽象層模組不能修改,這就使變化中的軟體系統有一定的穩定性和延續性。

[b]對可變性的封裝原則[/b]

(1)可變性不應散落到**的不同角落裡,而應該封裝到乙個物件裡。同一可變性的不同表現意味同一繼承等級結構中的具體子類。[b]繼承應該看做是封裝變化的方法[/b]

(2)一種可變不應與另一種可變混在一起,類圖的繼承關係一般不會超過兩層,如超過意味著兩種不同的可變性混合到了一起。

[b]與其他設計原則的關係[/b]

[b]1、黎克特制代換原則[/b]

黎克特制代換原則中說,任何基類可以出現的地方,子類一定可以出現。一般而言,違反黎克特制代換原則的,也違背「開-閉」原則,反過來並不一定成立。

[b]2、依賴倒轉原則[/b]

要依賴於抽象,不要依賴於實現。

「開-閉」原則是目標,而達到這一目標的手段是依賴倒轉原則。換言之,要想實現「開-閉」原則,就應當堅持依賴倒轉原則。違反依賴倒轉原則,就不可能達到「開-閉」原則的要求。

[b]3、合成/聚合復用原則[/b]

要盡量使用合成/聚合,而不是繼承關係達到復用的目的。遵守合成/聚合原則是實現「開-閉」原則的必要條件;違反這一原則就無法使系統實現「開-閉」原則這一目標。

[b]4、迪公尺特法則[/b]

乙個軟體實體應當與盡可能少的其他實體發生相互作用。

[b]5、介面隔離原則[/b]

應當為客戶端提供盡可能小的單獨的介面,而不是提供大的總介面。

顯然,介面隔離原則與廣義的迪公尺特法則都是對乙個軟體實體與其他的軟體實體的通訊的限制。廣義的迪公尺特法則要求近可能限制通訊的寬度和深度。介面隔離原則索要限制的是通訊的寬度,也就是說,通訊應當盡可能地窄。

OCP開閉原則

bertrand meyer提出此原則 模組應對擴充套件開放,對更改關閉 遵循開 閉原則的設計有兩個主要特性 1 對擴充套件開放 這意味著模組的行為可擴充套件。當需求改變時,可對模組進行擴充套件,使其具有滿足那些改變的新行為,使軟體具有適應性和靈活性。2 對更改關閉 對模組行為進行擴充套件時,不應改...

開閉原則 OCP

ocp open closed principle,常縮寫為ocp 開 閉 原則講的是 乙個軟體實體應當對擴充套件開放,對修改關閉。software entities should be open for extension,but closed for modification.1 抽象化是關鍵,...

二 OCP 開閉原則

open close principle 表述 1.乙個軟體實體應當對擴充套件開放 對修改封閉 2.對可變性的封閉原則 3.找到乙個系統的可變因素,將它封閉起來 也就是說在設計乙個模組的時候,應當可以在不被修改的前提下被擴充套件。解決問題的關鍵就在於 抽象化!那就是不允許更改系統的抽象層,而允許擴充...