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