OCP開閉原則

2021-05-23 23:41:50 字數 790 閱讀 5155

bertrand meyer提出此原則:「模組應對擴充套件開放,對更改關閉」。遵循開/閉原則的設計有兩個主要特性:

(1)「對擴充套件開放」。這意味著模組的行為可擴充套件。當需求改變時,可對模組進行擴充套件,使其具有滿足那些改變的新行為,使軟體具有適應性和靈活性。

(2)「對更改關閉」。對模組行為進行擴充套件時,不應改動已有模組,是軟體具有一定的穩定性和延續性。總之,當需要擴充套件新功能時,應編寫新的**,而不應更改已有的**。

這裡所講的模組包括模型、源**、可執行**等。

對於ocp原則,抽象是關鍵。如果所示,如果多個client依賴於乙個具體的server,當server需要擴充套件新功能時,將導致所有的client都可能改動。解決方法是抽象出乙個server,使client依賴這個抽象的server,僅說明哪些不易改變的一組服務,由其子類提供具體的實現和擴充套件,是實現的改變和擴充套件不會影響到多個client設計。

對於ocp原則的另一種解釋,就是「對可變性進行封裝的原則(principle of encapsulation of variation,簡稱evp)」。其核心思想是「找到系統中的可變因素,將其封裝起來」。evp有兩個要點:

(1)一種可變性不應散落在**的很多角落,而應封裝到乙個物件中。

(2)一種可變性與另一種可變性不能混雜在一起。

對於設計改變有兩種思路,傳統的思路是「什麼會導致設計改變」。《設計模式》作者gof指出另一種思路:「你允許什麼發生改變,但不能讓這一改變導致重新設計」。

在許多方面,ocp都是物件導向設計原則的核心。但實際應用中,濫用ocp原則也是錯誤的。正確的做法是僅對程式中呈現出頻繁變化的部分進行抽象和封裝。

開閉原則 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.找到乙個系統的可變因素,將它封閉起來 也就是說在設計乙個模組的時候,應當可以在不被修改的前提下被擴充套件。解決問題的關鍵就在於 抽象化!那就是不允許更改系統的抽象層,而允許擴充...

06 開閉原則 OCP

ocp open close principle 開閉原則 程式中的物件 類 模組 函式等 應該對於擴充套件開放,對於修改是封閉的。降低程式各部分的耦合度 提高 的可復用性 提高軟體的可維護性 解決問題關鍵在於抽象化,抽象化是物件導向設計的第乙個核心本質。在物件導向中,通過抽象類及介面,規定了具體類...