简单工厂模式确实有足够的简单,将父类的引用指向子类的对象,并将子类的创建过程交给工厂类来完成。
在该结构图中,加减乘除四种运算都继承自运算类,当程序要使用一种运算类的时候,无论是加减乘除,可以通过如下代码使用:
Operation oper = Factory.createOperate("+");
尽管简单工厂将对象的创建过程进行了封装,使用者不需要知道具体的对象创建过程,但是在新增类的时候,同样将修改工厂的创建方法,显然违背了开放-封闭原则。
所谓开放-封闭原则,指的是对扩展开放,对修改封闭。也就是说,我们可以在现有代码的基础上进行无限的扩展,但不能修改现有的代码。