设计模式(一)----- 工厂方法(FactoryMethod)----(JAVA版)
来源:互联网 发布:php后台管理模板 编辑:程序博客网 时间:2024/05/06 16:55
工厂方法(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
学生做作业
教师审批作业
0 0
- 设计模式(一)----- 工厂方法(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)
- iOS 动画 图层
- poj 1185 炮兵阵地
- 正品供应RINT-5211C/RINT-5311C
- hibernate注解
- 冒泡排序法
- 设计模式(一)----- 工厂方法(FactoryMethod)----(JAVA版)
- Android 使用Gallery实现3D相册(附效果图+Demo源码)
- UML机制、通用机制
- 【胖鱼头】基础概念
- 一筐鸡蛋的计算方式
- tomcat7配置数据源异常---Cannot create JDBC driver of class '' for connect URL 'null'
- fzoj 2082 过路费 【树链剖分】
- 3.CocoaPods的原理
- Magento(社区版)自带模块解析以及在国内的使用建议