此原则是由"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("盗版盘"); 光盘.卖(); }}