描述:一個軟件實體如類,模塊和函數應該對擴展開放,對修改關閉。
其實含義是說一個軟件實體應該通過擴展來實現變化,而不是通過修改已有的代碼來實現變化,那什么是軟件實體呢?
項目或軟件產品按一定的邏輯規(guī)則劃分的模塊。
抽象和類。
方法。
’



當需求變化的時候,有的書籍需要打折,那么如個解決這個需求呢?
?1? 修改接口? ? ?
在IBook上新增一個方法getOffprice()方法,專門用于處理打折的? 但是這樣修改的結果就是實現類也要修改? IBook作為接口應該是穩(wěn)定且可靠的,不應該經常變化,
2? 修改實現類
直接在getprice()方法中實現打折處理。
3? 通過擴展實現變化(可選)
?增加一個子類,復寫getPrice()方法,


注意 開閉原則對擴展開放,對修改關閉,并不意味者不做任何修改,底層模塊的變更,必然要有高層模塊進行耦合。