更为直观的例子结构图
在简单工厂中,我们将switch写在“给运算工厂类的方法里”,当需要在添加其他算法时,需要去修改switch中的case分支,那么就不符合“开放-封闭”原则,而这个时候工厂方法就出现了。而这样,尽管第一次看上去会发现,代码量很繁琐,但是当后续的算法增加,那么我们需要增加一个运算类子类,一个该子类的工厂,然后在客户端进行调用,那么就将修改的部分放到了客户端上,对我们的核心算法上对扩展开放,对修改封闭。
缺点:当需要增加新的算法时,增加了额外的代码量。
总结自:《大话设计模式》工厂方法模式