一直想不通你为什么那么狠心。今天用一下工厂方法模式吧。
一、什么是工厂方法模式?
所谓工厂方法模式即简单工厂模式的升级版。
工厂方法模式和简单工厂模式除了工厂类不同之外其它都一样。
二、有了简单工厂模式为什么还用工厂方法模式?
简单工厂模式似乎非常easy。正由于如此。他的工厂类违背了设计模式中的开放封闭原则。以第一话中的计算器为例。每次添加一个新的操作时都要更改工厂类里的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();
注:此图来自《大话设计模式》
四、总结
因为有前面简单工厂模式和封闭开放原则的基础,此模式非常easy。一起学习,加油。