天天看點

#yyds幹貨盤點#面向對象設計基本原則-開放封閉原則

開放封閉原則(Open-Closed Principle,OCP)指的是,對于一個類或者子產品,如果業務需要修改或者功能需要擴充時,應盡可能地保證在隻通過新添加代碼,而不是修改原有代碼的情況下完成。

該原則是Eiffel語言的設計者、法國計算機科學家Meyer提出的,最開始的描述是:當向子產品添加字段或方法時,不可避免地需要對調用這個子產品的程式進行修改,解決這個問題的方法是采用依賴于面向對象繼承(特别是從實際父類進行的實作繼承)的方法。而不是通過實作繼承的方法來解決問題。

解決方式是現存的接口或抽象類對于修改原有的方法和屬性是封閉的,但對新添加的方法和屬性則是開放和允許的。

#yyds幹貨盤點#面向對象設計基本原則-開放封閉原則

為什麼要對原有的代碼進行保護,對新加的代碼開放呢?

所有的軟體和程式都有一個生命周期,當需求和業務發生擴充和更新時,需要更新軟體(修複缺陷和軟體重構時的更新除外),要盡可能地保證軟體的基本架構不變,盡可能不修改現有的代碼,而是添加新的實作代碼,使得軟體具有更好的穩定性和可維護性。

實作擴充而不修改原有代碼的基礎就是采用接口或者抽象類等機制完成的。經過良好的定義,系統可以擁有一個相對穩定的抽象層,而将業務行為下沉到具體的實作層中。