设计模式——工厂模式
来源:互联网 发布:三国无双7捏脸数据 编辑:程序博客网 时间:2024/06/14 05:22
《Head first 设计模式》P135的最后一个问答,简单工厂与工厂方法之间的差异:
/* *P116,简单工厂 */public class PizzaStore { SimplePizzaFactory factory; public PizzaStore(SimplePizzaFactory factory) { this.factory = factory; } public Pizza orderPizza(String type) { pizza = factory.createPizza(type); //TODO }}//factory.createPizza(type)if(type.equals("cheese")) { pizza = new XXXPizza();} else if(type.equals("yyy")) { pizza = new YYYPizza();} else if(type.equals("zzz")) { pizza = new ZZZPizza();}/* *工厂方法 */ public abstract class PizzaStore { public Pizza orderPizza(String type) { pizza = createPizza(type); //TODO } protected abstract Pizza createPizza(String type);//具体怎么create交给子类实现}
简单工厂的那些createPizza方法在编写时已经写死,在运行时就是这么些的选择。如果想运行时,在多个方法间切换,就需要运用多态,比如用到工厂的接口、抽象类、父类,public PizzaStore(PizzaFactory factory)
将SimplePizzaFactory抽象成更一般化的PizzaFactory,这样就可以根据传入的参数,确定具体的createPizza的方法了。
按照上述修改和额外的改动(将成员变量PizzaFactory的抽象往上拉到了类PizzaStore抽象),简单工厂就变成了工厂方法。
0 0
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式—工厂模式
- 设计模式——工厂设计模式
- Java设计模式—工厂设计模式
- 设计模式——抽象工厂模式、工厂方法模式
- Java设计模式—工厂方法模式&抽象工厂模式
- Java设计模式—工厂方法模式&抽象工厂模式
- 最高效的oracle分页语句,你会了吗?
- Android优化 —— 布局
- MOOC 简单的整数划分问题
- 大二下,新的开始
- test
- 设计模式——工厂模式
- 深入掌握 ECMAScript 6 异步编程(四):async函数的含义与用法
- Html5 学习系列(六)Html5本地存储和本地数据库
- 单调递增最长子序列
- 随机数
- CSS3 Flex实现元素的水平居中和垂直居中
- JDBC例子
- classes里的文件不会更新的原因
- QTimer类使用方法。