面象物件設計6大原則之二:開放封閉原則

茅坤寶駿氹發表於2018-05-05

轉載自 面象物件設計6大原則之二:開放封閉原則


開放封閉原則OCP),The Open Closed Principle


定義

一個軟體的實體,包括類、方法、模組、應該對擴充套件開放,對修改關閉。


也就是說一個軟體的實體應該通過擴充套件的方式來修改變化,而不是修改已有實體原始碼。


開放封閉原則也是最基本需要遵守的原則,我們應該儘量保證系統的穩定性,我們在實現另外一個功能的時候不能修改之前已有的程式碼以免造成之前的功能出現BUG,帶來不必要的麻煩,所以開放封閉原則正是引導我們去設計一個穩定、方便擴充套件的系統。


在實際應用中我們一般會有以下幾種做法保證開放封閉原則:

1、抽象出一個介面或者抽象類,定義公共的方法,達到擴充套件的目的。

2、引數型別和引用型別使用介面或者抽象類,不能依賴實現類。

3、介面和抽象類不能修改,可以使用繼承介面或者抽象父類的形式達到擴充套件的目的。


這些應用看起來也並不複雜,無非是合理地定義介面和抽象類,不同的業務功能採用不同的實現類達到擴充套件,像設計模式中的策略模式、模板方式模式等都是開放封閉的原則。


總結一下,開放封閉原則具有以下幾個優點:

1、方便擴充套件,提高了可維護性。

2、不影響已有功能,提高了系統穩定性和減少了重複測試。

3、擴充套件之前的邏輯,提高了程式碼複用性。


相關文章