定義:一個(gè)軟件實(shí)體,如類、模塊和函數(shù)應(yīng)該對擴(kuò)展開放,對修改關(guān)閉
修改會(huì)帶來問題:
軟件生命周期內(nèi),對舊代碼(舊類)修改或者刪除會(huì)引起一些bug,而且需要重新測試整個(gè)功能模塊。
開閉原則避免修改帶來的問題
軟件需要變化時(shí),盡量通過擴(kuò)展軟件實(shí)體的行為來實(shí)現(xiàn)變化,而不是通過修改已有的代碼來實(shí)現(xiàn)。開閉原則是面向?qū)ο笤O(shè)計(jì)中最基礎(chǔ)的設(shè)計(jì)原則,它指導(dǎo)我們?nèi)绾谓⒎€(wěn)定靈活的系統(tǒng),開閉原則只定義了對修改關(guān)閉,對擴(kuò)展開放。其實(shí)只要遵循SOLID中的另外5個(gè)原則,設(shè)計(jì)出來的軟件就是符合開閉原則的。
用抽象構(gòu)建架構(gòu),用實(shí)現(xiàn)擴(kuò)展細(xì)節(jié)
用抽象構(gòu)建架構(gòu),用實(shí)現(xiàn)擴(kuò)展細(xì)節(jié)。因?yàn)槌橄箪`活性好,適應(yīng)性廣,只要抽象的合理,可以基本保證架構(gòu)的穩(wěn)定。往小了說,接口定義好一般不需要變動(dòng),增加其中的方法即可。