第八话-工厂方法模式
来源:互联网 发布:java编程规范第四版 编辑:程序博客网 时间:2024/05/18 23:25
一直想不通你为什么那么狠心。今天用一下工厂方法模式吧。
一、什么是工厂方法模式?
所谓工厂方法模式即简单工厂模式的升级版。工厂方法模式和简单工厂模式除了工厂类不同之外其他都一样。
二、有了简单工厂模式为什么还用工厂方法模式?
简单工厂模式似乎很简单,正因为如此,他的工厂类违背了设计模式中的开放封闭原则。以第一话中的计算器为例,每次增加一个新的操作时都要更改工厂类里的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();
注:此图来自《大话设计模式》
四、总结
由于有前面简单工厂模式和封闭开放原则的基础,此模式很简单。一起学习,加油。
- 第八话-工厂方法模式
- 设计模式C++版:第八式工厂方法模式
- 工厂模式 -- 工厂方法
- 工厂模式-工厂方法
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式---工厂方法模式
- 第八章 工厂方法 第九章 原型模式 第十章 模板方法 第十一章 迪米特法则
- 【模式】工厂方法模式
- 第八章 雷锋依然在人间-工厂方法模式(读书笔记)
- 第八章 雷锋依然在人间---工厂方法模式(读书笔记)
- 工厂方法,抽象工厂模式
- C#工厂模式-工厂方法
- 工厂模式 和工厂方法
- 工厂模式-C-工厂方法
- 工厂模式以及工厂方法
- ngrok 内网穿透利器
- Android 网络交互(四) UDP实现及UDP和TCP区别
- anchorPoint随记
- 第十三周项目1.2 折腾数组(2)倒序输出
- Linux的服务管理
- 第八话-工厂方法模式
- 第十二周项目四——银行系统(1)
- Oracle 的TO_DATE对日期处理
- UE正则表达式
- oracle备份
- Zookeeper的核心概念
- 第十一周项目6 回文素数(1)反序数
- Collider2D碰撞检测异常-Rotating sprite does not rotate collider[Unity]
- Hibernate:常用的主键生成策略