【设计模式】学习笔记4:简单工厂模式(Simple Factory)
来源:互联网 发布:es搜索引擎 java 编辑:程序博客网 时间:2024/06/03 20:29
本文出自 http://blog.csdn.net/shuangde800
之前已经学过“针对接口编程,而不是针对实现编程”,但是,当使用“new”时,却的确是在实例化一个具体类,所以用的是具体实现,而不是接口。
Duck duck = new MallardDuck( );
上面就是常用的实例化的new 方法。
用"new"有什么不好呢?
在技术上,new 没错,都是“改变”的错。
针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。因为如果是针对接口而写,那么通过多态,它可以与任何新类实现该接口。
但是,使用大量的具体类时,也是自找麻烦,因为一旦加入新的具体类,就必须改变代码。也就是说,你的代码并非“对修改关闭”。相用新的类必须重新打开它。
认识简单工厂模式
假设要开一个比萨店,要获取很多不同类型的比萨,那么我们可以写这样一个方法来获取比萨对象:
Pizza orderPizza(String type){ Pizza pizza; if(type.equals("chees")){ pizza = new CheesePizza(); }else if(type.equals("greek")){ pizza = new GreekPizza(); }else if(type.equals("pepperoni")){ pizza = new PepperoniPizza(); } pizza.prepare(); pizza.bake(); pizza.cut(); pizza.box(); return pizza;}
所以我们把创建对象移到orderPizza()之外,由这个对象专职创建比萨。
SimplePizzaFactory只做一件事情:帮它的客户创建比萨。
public class SimplePizzaFactory {public Pizza createPizza(String type) {Pizza pizza = null;if (type.equals("cheese")) {pizza = new CheesePizza();} else if (type.equals("pepperoni")) {pizza = new PepperoniPizza();} else if (type.equals("clam")) {pizza = new ClamPizza();} else if (type.equals("veggie")) {pizza = new VeggiePizza();}return pizza;}}
上面对象就是工厂(factory),工厂处理创建对象的细节。
PizzaStore类,使用SimplePizzaFactory对象来创建比萨
public class PizzaStore {SimplePizzaFactory factory; public PizzaStore(SimplePizzaFactory factory) { this.factory = factory;} public Pizza orderPizza(String type) {Pizza pizza; pizza = factory.createPizza(type); //注意,把new变成了工厂的创建方法!不再使用具体实例化! pizza.prepare();pizza.bake();pizza.cut();pizza.box();return pizza;}}
定义简单工厂模式
简单工厂其实不是一个设计模式,反而是一种编程习惯,但是却经常使用。
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
- 设计模式学习笔记三:简单工厂(Simple Factory)
- 【设计模式】学习笔记4:简单工厂模式(Simple Factory)
- 设计模式学习笔记--简单工厂模式(Simple Factory Pattern)【创建型模式】
- 设计模式-简单工厂(Simple Factory)
- 简单工厂设计模式(Simple Factory)
- 设计模式 一 简单工厂Simple Factory(工厂模式)
- 设计模式-Simple Factory 简单工厂模式(静态工厂)
- 设计模式笔记4:简单工厂模式(Simple Factory Pattern)
- [设计模式整理笔记 二] 简单工厂模式(Simple Factory)
- 设计模式-简单工厂模式(Simple Factory)
- 设计模式(二)-简单工厂(Simple Factory)模式
- 设计模式之简单工厂模式(Simple Factory Pattern)
- 设计模式1:Simple Factory Pattern(简单工厂模式)
- 设计模式之Simple Factory(简单工厂模式)
- Java设计模式 - 简单工厂模式(Simple Factory)
- 大话设计模式一:简单工厂模式(simple factory)
- c#设计模式- Simple Factory模式(简单工厂)
- 设计模式-简单工厂模式(simple factory)
- 如何给你iOS项目选择最合适的XML解析方式
- 手动创建两个文本文件text1.txt,text2.txt,要求编程创建text3.txt,实现text1.txt和text2.txt文件中除去首行和末尾,其余对应的数据相加,三个文本的内容如下
- HDU 1596 最短路径
- 一起学WF3.5【9】
- 大杂烩_知识点滴
- 【设计模式】学习笔记4:简单工厂模式(Simple Factory)
- HDU 1874 最短路径
- HDU 2066 最短路径
- 关于SAP中 数据库表类型的一些理解
- 每日学习心得:Linq解决DataTable按照某一列的值排序问题/DataTable 导出CSV文件/巧用text-overflow解决数据绑定列数据展示过长问题
- 数据表为什么又叫透明表
- Power BI for Office 365介绍
- 谈谈我对攻读计算机研究生的看法
- 跳入c++1