创建型模式--工厂方法模式
来源:互联网 发布:京东算法大赛代码 编辑:程序博客网 时间:2024/06/05 06:54
概述
定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。
适用性
1.当一个类不知道它所必须创建的对象的类的时候。 2.当一个类希望由它的子类来指定它所创建的对象的时候。 3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
参与者
1.Product 定义工厂方法所创建的对象的接口。 2.ConcreteProduct 实现Product接口。 3.Creator 声明工厂方法,该方法返回一个Product类型的对象。 Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。 可以调用工厂方法以创建一个Product对象。 4.ConcreteCreator 重定义工厂方法以返回一个ConcreteProduct实例。
类图:
代码描述:
/** * 定义工厂方法所创建的对象的接口。 * @author Linhai Gu * */public interface IWork {void doWork();}
<strong><span style="font-size:18px;">/** * 实现IWork接口。 * @author Linhai Gu * */public class CoderWork implements IWork{@Overridepublic void doWork() {// TODO Auto-generated method stubSystem.out.println("程序员拼命写完代码,并提交项目!");}}</span></strong>
<strong><span style="font-size:18px;">/** * 实现IWork接口。 * @author Linhai Gu * */public class ManagerWork implements IWork{@Overridepublic void doWork() {// TODO Auto-generated method stubSystem.out.println("项目经理审核项目并上线!");}}</span></strong>
<strong><span style="font-size:18px;">/** * 声明工厂方法,该方法返回一个IWork类型的对象。 * 可以调用工厂方法以创建一个IWork对象。 * @author Linhai Gu * */public interface IWorkFactory {IWork getWork();}</span></strong>
<strong><span style="font-size:18px;">/** * 重定义工厂方法以返回一个具体实例。 * @author Linhai Gu * */public class CoderWorkFactory implements IWorkFactory{@Overridepublic IWork getWork() {// TODO Auto-generated method stubreturn new CoderWork();}}</span></strong>
<strong><span style="font-size:18px;">/** * 重定义工厂方法以返回一个具体实例。 * @author Linhai Gu * */public class ManagerWorkFactory implements IWorkFactory{@Overridepublic IWork getWork() {// TODO Auto-generated method stubreturn new ManagerWork();}}</span></strong>
<strong><span style="font-size:18px;">/** * 测试 * @author Linhai Gu * */public class MainTest {public static void main(String[] args) {// TODO Auto-generated method stubCoderWorkFactory coderWorkFactory=new CoderWorkFactory();ManagerWorkFactory managerWorkFactory=new ManagerWorkFactory();coderWorkFactory.getWork().doWork();managerWorkFactory.getWork().doWork();}}</span></strong>
运行结果:
转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/41413431 情绪控_
2 0
- 创建型模式-工厂方法
- 创建型模式-工厂方法
- 创建型--工厂方法模式
- 工厂方法模式(创建型)
- 创建型模式--工厂方法
- 设计模式-创建型模式-工厂方法
- 认识创建型模式---工厂方法模式
- 创建型模式之工厂方法模式
- 【设计模式】创建型模式-工厂方法
- 工厂方法模式(创建型模式)
- 创建型模式--工厂方法模式
- 创建型模式之工厂方法模式
- 创建型模式之工厂方法模式
- 创建型模式之工厂方法模式
- 工厂方法模式-创建型模式
- 创建型模式—工厂方法模式
- 创建型模式01:简单工厂模式、工厂方法模式、抽象工厂模式
- "围观"设计模式(8)--创建型之简单工厂模式、工厂方法模式、抽象工厂模式
- 数据库中两张表之间的数据同步增加、删除
- 第十七周 项目六:学生成绩统计(6.5)
- UIView xib创建和切换/控制器传值
- tomcat 内存配置优化 Xms Xmx
- VC++组合框操作辅助类使组合框显示字符串与任意数据类型配对
- 创建型模式--工厂方法模式
- Objective C的SEL类型
- MySQL 安装与使用(EER图建立与数据插入)
- Arrays in C#
- go语言的官方包sync.Pool的实现原理和适用场景
- 17周(函数参数传递)
- UITouch 触摸事件
- Easyui 加载效果
- newLISP symbol