设计模式-创建型模式#工厂方法FactoryMethod

来源:互联网 发布:人工智能编程语言 编辑:程序博客网 时间:2024/05/16 03:15

此例子是java的23种设计模式中的例子,很久以前就看了。今天下班看来部电影《战狼》,看完了没什么事就翻了一下书,重温了一次,以此做下笔记。


FactoryMethod工厂方法

定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod
使一个类的实例*延伸到其子类。

适用性
1、当一个类不知道它所必须创建的对象的类的时候。
2、当一个类希望由它的子类来指定它所创建的对象的时候。
3、当*将创建对象的职责委托给多个帮助*类中的某一个。并且*将希望哪一个
帮助子类是代理者这一信息局部化的时候。

参与者
1、Product
定义工厂方法所 创建的对象的接口。
2、ConcreteProduct
实现Product接口
3、Creator
声明工厂方法,该方法返回一个Product类型的对象
Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的
ConcreteProduct对象。
可以调用工厂方法以创建一个Product对象。
4、ConcreteCreator

重定义工厂方法以返回一个ConcreteProduct实例。


类图:


*roduct

package com.dsp;public interface Work {void doWork();}



ConcreteProduct
package com.dsp;public class StudentWork implements Work {@Overridepublic void doWork() {System.out.println("学生做作业!");}}

package com.dsp;public class TeacherWork implements Work {@Overridepublic void doWork() {System.out.println("老师审批作业!");}}



Creator
package com.dsp;public interface IWorkFactory {Work getWork();}

package com.dsp;public class StudentWorkFactory implements IWorkFactory {@Overridepublic Work getWork() {return new StudentWork();}}



ConcreteCreator
package com.dsp;public class TeacherWorkFactory implements IWorkFactory {@Overridepublic Work getWork() {return new TeacherWork();}}



测试类
package com.dsp;public class Test {/** * @param args */public static void main(String[] args) {IWorkFactory studentWorkFactory = new StudentWorkFactory();studentWorkFactory.getWork().doWork();IWorkFactory teacherWorkFactory = new TeacherWorkFactory();teacherWorkFactory.getWork().doWork();}}

控制台输出:

学生做作业!
老师审批作业!


0 0