首页 > 代码库 > 第八话-工厂方法模式

第八话-工厂方法模式




一直想不通你为什么那么狠心。今天用一下工厂方法模式吧。
一、什么是工厂方法模式?
所谓工厂方法模式即简单工厂模式的升级版。工厂方法模式和简单工厂模式除了工厂类不同之外其他都一样。
二、有了简单工厂模式为什么还用工厂方法模式?
简单工厂模式似乎很简单,正因为如此,他的工厂类违背了设计模式中的开放封闭原则。以第一话中的计算器为例,每次增加一个新的操作时都要更改工厂类里的switch分支。这样就违背了面向对象设计的扩展而非修改-也既是之前学习的开放封闭原则。怎么解决这个问题呢?我们可以采用依赖倒转原则对其完善。
三、代码示例(在第一话计算器的基础上修改)
第一个变化:
把之前的OperationFactory.java修改如下
public interface OperationFactory {
 public Operation createOperation();
}
第二个变化:
添加新的工厂类:AddFactory.java
public class AddFactory implements OperationFactory {
 public Operation createOperation() {
  // TODO Auto-generated method stub
  return new AddOperation();
 }
}
使用AddFactory给OperationFactory实例化
OperationFactory factory = new AddFactory();
Operation operation = factory.creaOperation();

注:此图来自《大话设计模式》
四、总结
由于有前面简单工厂模式和封闭开放原则的基础,此模式很简单。一起学习,加油。

第八话-工厂方法模式