此原則是由"Bertrand Meyer"提出的。原文是:"Software entities should be open for extension,but closed for modification"。就是說模塊應(yīng)對(duì)擴(kuò)展開放,而對(duì)修改關(guān)閉。模塊應(yīng)盡量在不修改原(是"原",指原來的代碼)代碼的情況下進(jìn)行擴(kuò)展。那么怎么擴(kuò)展呢?我們看工廠模式"factory pattern":假設(shè)中關(guān)村有一個(gè)賣盜版盤和毛片的小子,我們給他設(shè)計(jì)一"光盤銷售治理軟件"。我們應(yīng)該先設(shè)計(jì)一"光盤"接口。如圖:
而盜版盤和毛片是其子類。小子通過"DiscFactory"來治理這些光盤。代碼為:
public class DiscFactory{ public static 光盤 getDisc(String name){ return (光盤)Class.forName(name).getInstance(); }} 有人要買盜版盤,怎么實(shí)現(xiàn)呢?
public class 小子{ public static void main(String[] args){ 光盤 d=DiscFactory.getDisc("盜版盤"); 光盤.賣(); }}