设计模式(一):工厂模式FactoryMethod(创建型模式)
来源:互联网 发布:ubuntu卸载搜狗拼音 编辑:程序博客网 时间:2024/05/22 03:46
一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。
一.适用性
1.当一个类不知道它所必须创建的对象的类的时候。
2.当一个类希望由它的子类来指定它所创建的对象的时候。
3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
二.特点
核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
三.组成
1.Product
定义工厂方法所创建的对象的接口。
2.ConcreteProduct
实现Product接口。
3.Creator
声明工厂方法,该方法返回一个Product类型的对象
Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。
可以调用工厂方法以创建一个Product对象。
4.ConcreteCreator
重定义工厂方法以返回一个ConcreteProduct实例。
四.实例
package com.zoey.designPattern.AbstractFactory;/** * 定义工厂方法所创建的对象的接口。 */public interface foodFactory { void doFood();}
package com.zoey.designPattern.AbstractFactory;/** * * @author Zoey * *实现Product接口 */public class anmailFood implements foodFactory { @Override public void doFood() { // TODO Auto-generated method stub System.out.println("森林里的野果"); }}
package com.zoey.designPattern.AbstractFactory;/** * * @author Zoey * * 实现Product接口 */public class personFood implements foodFactory { @Override public void doFood() { // TODO Auto-generated method stub System.out.println("苹果派!"); }}
package com.zoey.designPattern.AbstractFactory;/** * * @author Zoey * * 声明工厂方法,该方法返回一个Product类型的对象* Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。 可以调用工厂方法以创建一个Product对象。 */public interface IFoodFactory { foodFactory getFoodFactory();}
package com.zoey.designPattern.AbstractFactory;/** * * @author Zoey * *重定义工厂方法以返回一个ConcreteProduct实例 */public class anmailFoodFactory implements IFoodFactory { @Override public foodFactory getFoodFactory() { // TODO Auto-generated method stub return new anmailFood(); }}
package com.zoey.designPattern.AbstractFactory;/** * * @author Zoey * *重定义工厂方法以返回一个ConcreteProduct实例 */public class personFoodFactory implements IFoodFactory { @Override public foodFactory getFoodFactory() { // TODO Auto-generated method stub return new personFood(); }}
package com.zoey.designPattern.AbstractFactory;public class Test { public static void main(String[] args) { // TODO Auto-generated method stub IFoodFactory personFood = new personFoodFactory(); personFood.getFoodFactory().doFood(); IFoodFactory anmailFood = new anmailFoodFactory(); anmailFood.getFoodFactory().doFood(); }}
比喻:摘自网络
0 0
- 设计模式(二)工厂方法模式(FactoryMethod)-创建型
- 设计模式(一):工厂模式FactoryMethod(创建型模式)
- 设计模式--创建型-FactoryMethod(工厂方法)
- C++设计模式 -> 创建型 -> 工厂方式(FactoryMethod)
- 工厂模式(FactoryMethod)
- 创建型模式之工厂方法模式(FactoryMethod)
- 面向对象设计模式之FactoryMethod工厂方法模式(创建型)
- java设计模式之创建型模式-FactoryMethod ( 工厂方法 )
- 创建型设计模式之工厂方法模式FactoryMethod
- 设计模式-创建型模式#工厂方法FactoryMethod
- 设计模式-创建型模式:工厂方法FactoryMethod
- 设计模式(二) 工厂方法(FactoryMethod)
- 创建型 工厂模式(FactoryMethod)的入门认识
- FactoryMethod(工厂方法)模式
- 工厂方法(FactoryMethod)模式
- 工厂方法模式(FactoryMethod)
- 设计模式的实现(C++)------工厂方法模式(FactoryMethod)
- 设计模式 (二)工厂方法模式(FactoryMethod)
- Android编码规范
- 堆、堆栈与数据结构中的堆
- [svn] 解决SVN冲突攻略(手册)
- 关于lex中正则表达式区分减号和负号(正后顾不可用)
- javascript判断IE浏览器最简单的方法
- 设计模式(一):工厂模式FactoryMethod(创建型模式)
- elasticsearch由于数据特别长而找不到数据
- 语音识别博客
- iOS关于自动布局(Autolayout)SizeClass
- 100-150
- mac下不能卸载和升级numpy的解决办法
- CodeForces A. Wet Shark and Odd and Even
- Eclipse 中安装 Pydev 插件
- 如何设置进程(线程)在指定的CPU上运行