描述:一個軟件實(shí)體如類夫否,模塊和函數(shù)應(yīng)該對擴(kuò)展開放,對修改關(guān)閉柬赐。
其實(shí)含義是說一個軟件實(shí)體應(yīng)該通過擴(kuò)展來實(shí)現(xiàn)變化,而不是通過修改已有的代碼來實(shí)現(xiàn)變化官紫,那什么是軟件實(shí)體呢肛宋?
項(xiàng)目或軟件產(chǎn)品按一定的邏輯規(guī)則劃分的模塊。
抽象和類束世。
方法酝陈。
’
當(dāng)需求變化的時候,有的書籍需要打折毁涉,那么如個解決這個需求呢沉帮?
?1? 修改接口? ? ?
在IBook上新增一個方法getOffprice()方法,專門用于處理打折的? 但是這樣修改的結(jié)果就是實(shí)現(xiàn)類也要修改? IBook作為接口應(yīng)該是穩(wěn)定且可靠的,不應(yīng)該經(jīng)常變化遇西,
2? 修改實(shí)現(xiàn)類
直接在getprice()方法中實(shí)現(xiàn)打折處理馅精。
3? 通過擴(kuò)展實(shí)現(xiàn)變化(可選)
?增加一個子類,復(fù)寫getPrice()方法粱檀,
注意 開閉原則對擴(kuò)展開放洲敢,對修改關(guān)閉,并不意味者不做任何修改茄蚯,底層模塊的變更压彭,必然要有高層模塊進(jìn)行耦合。