设计模式(一)----- 工厂方法(FactoryMethod)----(JAVA版)
来源:互联网 发布:ubuntu删除.开头文件 编辑:程序博客网 时间:2024/05/19 14:35
工厂方法(FactoryMethod):
定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类
适用性:
1.当一个类不知道它所必须创建的对象的类的时候
2.当一个类希望由它的子类来指定它所创建的对象的时候
3.当一个类将创建对象的职责委托给多个帮助子类中的某一个,并且不知道希望将哪一个帮助子类是代理者这一信息局部化的时候
参与者:
1.Product
定义工厂方法所创建的对象的接口
2.ConcreteProduct
实现Product的接口
3.Creator
声明工厂方法,该方法返回一个Product类型的对象
Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象
可以调用工厂方法以创建一个Product对象
4.ConcreteCreator
重定义工厂方法以返回一个ConcreteProduct实例
UML:
一个简单的例子:
Product
public interface Work { void doWork();}
ConcreteProduct
public class StudentWork implements Work{ public void doWork(){ System.out.println("学生做作业"); }}
public class TeacherWork implements Work{ public void doWork(){ System.out.println("教师审批作业"); }}
Creator
public interface IWorkFactory { Work getWork();}
ConcreteCreator
public class StudentWorkFactory implements IWorkFactory { public Work getWork(){ return new StudentWork(); }}
public class TeacherWorkFactory implements IWorkFactory { public Work getWork(){ return new TeacherWork(); }}
Test
public class Test{ public static void main(String[] args){ IWorkFactory studentWorkFactory = new StudentWorkFactory(); studentWorkFactory.getWork().doWork(); IWorkFactory teacherWorkFactory = new TeacherWorkFactory(); teacherWorkFactory.getWork().doWork(); }}
Result
学生做作业
教师审批作业
- 设计模式(一)----- 工厂方法(FactoryMethod)----(JAVA版)
- 设计模式(一)----- 工厂方法(FactoryMethod)----(JAVA版)
- 设计模式--工厂方法(FactoryMethod)
- 设计模式工厂方法(FactoryMethod)
- Java设计模式----------简单工厂类+工厂方法(FactoryMethod)
- 设计模式之—工厂方法模式(FactoryMethod)-Java实现
- JAVA设计模式三--factorymethod(工厂方法模式)
- JAVA设计模式三:--factorymethod(工厂方法模式)
- java设计模式之创建型模式-FactoryMethod ( 工厂方法 )
- 浅谈JAVA设计模式之——工厂方法(FactoryMethod)
- 设计模式之--工厂方法模式(FactoryMethod )
- 设计模式 -- 工厂方法模式 FactoryMethod
- 设计模式之工厂方法模式(FactoryMethod)
- 设计模式-工厂方法模式-factorymethod-python
- 设计模式之FactoryMethod(工厂方法)
- 设计模式(二) 工厂方法(FactoryMethod)
- 23设计模式之工厂方法(FactoryMethod)
- 23设计模式之工厂方法(FactoryMethod)
- Java中用split函数进行分割字符串 及 没有任何输出的原因
- 总目录预览
- Android实现渐显按钮的左右滑动效果
- 抽象的操作系统(一) --- 前言
- CentOS 5.2 LVM 新增加一块硬盘的方法
- 设计模式(一)----- 工厂方法(FactoryMethod)----(JAVA版)
- Linux iostat监测IO状态
- jxl+struts1向后台导入excel表格中的数据
- sql server 2005 级联删除
- 获取绝对路径
- 格式化sqlplus的输出
- Visual Studio 2010下使用API断点!
- TFT LCD液晶显示器的驱动原理
- <ctime> (time.h)