java设计模式之simpleFactory
来源:互联网 发布:2017最火红网络歌曲 编辑:程序博客网 时间:2024/05/22 08:08
工厂模式有以下几种形态:
① 简单工厂(Simple Factory)
② 工厂方法(Factory Method)
③ 抽象工厂(Abstract Factory)
今天主要了解了一下Simple Factory,不多说什么了,用代码说话:)
一下例子参考head first design pattern:
Pizza orderPizza{
Pizza pizza =- new Pizza();
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}
看到上面的代码大家觉得挺好的呀,没什么问题,我需要一个pizza类,我就创建了一个它的实例,调用它的一些犯法返回了这个实例对象。
可是接下来问题出现了,客人要求有很多种不同的pizza,你想着好办,我就给他加个参数啊:)
Pizza orderPizza(String type){
Pizza pizza ;
if(type.equls("cheese")){
pizza = new CheesePizza();
}else if(type.equls("greek")){
pizza = new GreekPizza();
}else if(type.equals("pepperoni"){
pizza = new PepperoniPizza();
}
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}
这个时候你很开心的说,怎么样我完成了你需要的,但是当我们要添加新种类的Pizza的时候会出现什么问题,需要添加和修改orderPizza方法,你想那我就加啊,反正也就修改这个方法,也不会太麻烦。如果仅仅有一个方法或者类需要Pizza的话这么做确实不麻烦,但是当我们有很多类需要Pizza的时候会出现什么问题,比如PizzaShop中我们需要点Pizza,可能需要它的价格或者描述,这个时候我们需要一个Pizza实例,有可能我们还有一个运送Pizza的类需要Pizza实例,这个时候我们就需要在三个地方作出修改,在大的系统中可能更多。
在这个时候Simple Factory起作用了,因为我们已经知道了那一部分是可变的,这个时候我们就可以把这个可变的部分封装起来:)
public class SimplePizzaFactory{
public Pizza createPizza(String type){
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;
}
看到了吧,这就是一个Simple Factory,它创建了我们需要的Pizza对象。接下来看一下我们的orderPizza方法发生了什么改变。
public class PizzaStore{
SimplePizzaFactory factory;
public PizzaStore(SimplePizzaFactory fatory){
this.factory = factory;
}
public Pizza orderPizza(String type){
Pizza pizza;
pizza = factory.createPizza(type);
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}
现在我们修改代码的时候只要修改factory了就可以了,但是Simple Factory的问题在于不能继承,接下来的两个工厂模式很好的解决了该问题。正在学习中,不对的地方请大家指出:)
- java设计模式之simpleFactory
- java设计模式1:simplefactory
- 设计模式之简单工厂模式(SimpleFactory)
- 设计模式之SimpleFactory(简单工厂)
- 设计模式之简单工厂(SimpleFactory)
- 创建型设计模式之简单工厂模式SimpleFactory
- IOS设计模式浅析之简单工厂模式(SimpleFactory)
- 设计模式 -- 简单工厂模式 SimpleFactory
- 设计模式-简单工厂模式(SimpleFactory)
- (1)设计模式之--创建型模式------------简单工厂模式SimpleFactory
- 23种设计模式之-----简单工厂(静态工厂)模式(SimpleFactory Pattern)
- 设计模式——简单工厂 SimpleFactory
- GoF设计模式:SimpleFactory简单工厂
- SimpleFactory模式
- 设计模式之一--简单工厂设计模式(SimpleFactory)
- JAVA SimpleFactory
- 设计模式-简单工厂模式(SimpleFactory-C#)
- 设计模式-简单工厂模式(SimpleFactory-C#)
- SQL数据库通用访问类
- 一个三层架构的WinForms程序的完整范例(.NET 1.1/Northwind)
- javascript button 提交
- ASP.NET加密技术的应用(加密类代码参考)
- 正则表达式的3种匹配模式
- java设计模式之simpleFactory
- 用 WebClient.UploadData 方法 上载文件数据
- 产品经理需要考虑的6个问题
- Tomcat jndi 数据库配置 连接池配置
- 看电容选板卡基本原则!
- 板卡电容爆浆到底是谁在作祟
- 有关抽象数据类型的条款
- SQL*PLUS命令的使用大全[zt]
- 用结构指针来动态建立树结构