创建型模式--工厂方法模式
概述
定义一个用于创建对象的接口,让子类决定实例化哪一个类。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>
运行结果:
创建型模式--工厂方法模式相关推荐
- python创建方法draw_【python设计模式-创建型】工厂方法模式
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻 ...
- 创建型设计模式----工厂方法模式
1. 介绍 1.1 定义 工厂方法模式,又称工厂模式,通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象. 1.2 主要作用 将类的实例化(具体产品的创建)延迟到工厂类的子类(具体 ...
- 软件架构设计师-创建型模式-单例模式-原型模式-工厂方法模式-抽象工厂模式-建造者模式
文章目录 1.单例模式 2.原型模式 3.工厂方法(Factory Method)模式 4.抽象工厂(AbstractFactory)模式 5.建造者(Builder)模式 6.作者答疑 在面向对 ...
- 设计模式-创建型模式-工厂方法模式
工程源码:c++设计模式-创建型模式-工厂方法模式https://download.csdn.net/download/qq_40788199/85541617 码云:https://gitee.co ...
- 重学Java设计模式-创建者模式-工厂方法模式
重学Java设计模式-创建者模式-工厂方法模式 内容摘自:重学 Java 设计模式:实战工厂方法模式「多种类型商品不同接口,统一发奖服务搭建场景」 | bugstack 虫洞栈 工厂方法模式介绍 图片 ...
- 设计模式学习笔记-2 创建者模式-工厂方法模式
设计模式学习笔记-2 创建者模式-工厂方法模式 工厂模式介绍 工厂模式又称工厂方法模式,是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型. 这种设计模式使Java开 ...
- 【设计模式】 - 创建者模式 - 工厂方法模式、抽象工程模式
工厂方法模式.抽象工程模式 前言 工厂方法模式. 抽象工程模式 1. 简单工厂模式(不属于GOF的23种经典设计模式) 1.1 结构 1.2 实现 缺点 2. 工厂方法模式 2.1 结构 2.2 实现 ...
- java-抽象工厂模式+工厂方法模式+策略模式简单应用实战(登录场景)
前言 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计模式 ...
- 策略模式和工厂模式的区别_设计模式之工厂模式-工厂方法模式
设计模式之工厂模式-工厂方法模式 大家好,欢迎来到污污弹公司,今天司小司又接到了一个新活-披萨项目. 来源:凯哥Java(kaigejava) 需求: 披萨项目: 要方便披萨品种的扩展.要便于维护.要 ...
- Java设计模式之(工厂模式)--简单工厂模式--工厂方法模式--抽象工厂模式
工厂模式: 工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 简单工厂模 ...
最新文章
- Django --ORM常用的字段和参数 多对多创建形式
- android 自定义打包,android 自定义打包后的app名称
- GRUNT----JSHINT
- Work Time Manager【开源项目】- 创建自己日志组件 2.0重构
- 聚焦四大领域,恒生电子发布2022年金融科技技术与应用趋势
- linux 添加sftp用户
- python 编码问题_Python电源挑战| 竞争编码问题
- nemesis什么车_马力2100匹《Trion Nemesis》谜样超跑诞生中?
- 【科普篇】推荐系统之矩阵分解模型
- qt中如何模拟按钮点击_怎么在qt中实现一个按钮列表?
- 腾讯视频 Python 爬虫项目实战
- dispatcherServlet源码分析之doDispatch
- pmp学习资料下载-pmp备考
- ESET_VC52_UPID (nod32激活获取器)V4.2.0.9 绿色版
- win10 提升administrator权限 管理员权限
- C语言 习题3-1 比较大小 (简单解法)
- 高等数学(第七版)同济大学 习题6-2 (后18题)个人解答
- C语言面试题--已知整形变量在内存中占4个字节的空间,现有一无符号整形变量a = 0x20190125,请编写函数求出变量a所占内存每个字节的值是多少?
- 【09年特长生第四题】开发区规划
- 文件服务器拷贝资料需要解锁,如何加密U盘文件防止复制,怎样实现U盘文件防拷贝?...