1.工厂创建型模式亦称虚拟构造函数、Virtual Constructor、Factory Method

工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。

2.使用场景
工厂方法模式适合应用场景
当你在编写代码的过程中, 如果无法预知对象确切类别及其依赖关系时, 可使用工厂方法。

工厂方法将创建产品的代码与实际使用产品的代码分离, 从而能在不影响其他代码的情况下扩展产品创建部分代码。

例如, 如果需要向应用中添加一种新产品, 你只需要开发新的创建者子类, 然后重写其工厂方法即可。

如果你希望用户能扩展你软件库或框架的内部组件, 可使用工厂方法。

继承可能是扩展软件库或框架默认行为的最简单方法。 但是当你使用子类替代标准组件时, 框架如何辨识出该子类?

解决方案是将各框架中构造组件的代码集中到单个工厂方法中, 并在继承该组件之外允许任何人对该方法进行重写。

让我们看看具体是如何实现的。 假设你使用开源 UI 框架编写自己的应用。 你希望在应用中使用圆形按钮, 但是原框架仅支持矩形按钮。 你可以使用 圆形按钮Round­Button子类来继承标准的 按钮Button类。 但是, 你需要告诉 UI框架UIFramework类使用新的子类按钮代替默认按钮。

为了实现这个功能, 你可以根据基础框架类开发子类 圆形按钮 UIUIWith­Round­Buttons , 并且重写其 create­Button创建按钮方法。 基类中的该方法返回 按钮对象, 而你开发的子类返回 圆形按钮对象。 现在, 你就可以使用 圆形按钮 UI类代替 UI框架类。 就是这么简单!

如果你希望复用现有对象来节省系统资源, 而不是每次都重新创建对象, 可使用工厂方法。

在处理大型资源密集型对象 (比如数据库连接、 文件系统和网络资源) 时, 你会经常碰到这种资源需求。

让我们思考复用现有对象的方法:

首先, 你需要创建存储空间来存放所有已经创建的对象。
当他人请求一个对象时, 程序将在对象池中搜索可用对象。
…然后将其返回给客户端代码。
如果没有可用对象, 程序则创建一个新对象 (并将其添加到对象池中)。
这些代码可不少! 而且它们必须位于同一处, 这样才能确保重复代码不会污染程序。

可能最显而易见, 也是最方便的方式, 就是将这些代码放置在我们试图重用的对象类的构造函数中。 但是从定义上来讲, 构造函数始终返回的是新对象, 其无法返回现有实例。

因此, 你需要有一个既能够创建新对象, 又可以重用现有对象的普通方法。 这听上去和工厂方法非常相像。

工厂模式概念及其使用场景相关推荐

  1. [设计模式]简单工厂和工厂方法模式适用场景

    简单工厂模式 适用场景: 1.工厂类负责创建的对象比较少,由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂. 2.客户端只知道传入工厂类的参数,对于如何创建对象并不关心. 工厂方法模式 适用场 ...

  2. 设计模式-抽象工厂模式的应用场景及Java中对抽象工厂的应用

    1. 什么是抽象工厂模式 抽象工厂模式提供了一个创建一系列相关或者相互依赖对象的接口,无需指定他们的类 抽象工厂模式(Abstract Factory Pattern)隶属于设计模式中的创建型模式,用 ...

  3. Java设计模式【之】工厂方法模式【场景:制作咖啡】

    Java设计模式[之]工厂方法模式[场景:制作咖啡] 1.工厂方法 1.1.工厂方法模式 1.2.具体需求(生产多种咖啡) 2.代码实现 2.1.代码结构 2.2.咖啡抽象类 2.3.一种咖啡 2.4 ...

  4. android 工厂方法模式应用场景,Android设计模式(四)- 工厂方法模式

    目录 定义 使用场景 UML 模式1 模式2 模式3 简单工厂模式静态工厂模式 简单实现 Android源码中的工厂方法 总结 优点 缺点 工厂方法模式也是创建型模式. 工厂模式根据抽象程度可以分为三 ...

  5. 【设计模式】抽象工厂模式 ( 简介 | 适用场景 | 优缺点 | 产品等级结构和产品族 | 代码示例 )

    文章目录 一.抽象工厂模式简介 二.抽象工厂模式适用场景 三.抽象工厂模式优缺点 四.产品等级结构和产品族 五.抽象工厂模式代码示例 1.冰箱抽象类 2.美的冰箱实现类 3.格力冰箱实现类 4.空调抽 ...

  6. 工厂方法模式适用场景

    创建对象需要大量重复的代码. 客户端(应用层)不依赖于产品类实例如何被创建.实现等细节. 一个类通过其子类来指定创建哪个对象.

  7. 智数合一,智慧工厂的四大典型应用场景

    十四五规划在新基建的基础上进一步加快了制造业转型升级的步伐,对 5G.工业互联网.AI.工业大数据.工业软件等技术或产品作了进一步的强调,未来制造业的发展方向将是高效节能.绿色环保的智慧工厂. 智慧工 ...

  8. 工厂模式实现及使用场景--java

    文章目录 概述 不使用工厂模式 简单工厂模式 工厂方法 抽象工厂 使用场景 工厂模式好处 概述 工厂模式为一种创建型设计模式,主要目的在于将对象的创建与使用进行解耦,使用者并不用关心对象具体的创建逻辑 ...

  9. 【设计模式】工厂方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

    文章目录 一.工厂方法模式简介 二.工厂方法模式适用场景 三.工厂方法模式优缺点 四.工厂方法模式代码示例 1.产品抽象类 2.产品实现类 1 3.产品实现类 2 4.抽象工厂类 5.实现工厂类 1 ...

  10. 什么是工厂模式(Factory)?应用场景是什么?

    针对Java设计模式,推荐一书<大话设计模式>: 链接: https://pan.baidu.com/s/16YZ8nMx6M2C94_dmMWjh0w 提取码: aw5y 1.Facto ...

最新文章

  1. 【牛客】CSL 的字符串 (stack map)
  2. KTable的简单介绍
  3. Spark 开窗函数
  4. HTML5开发手机应用--viewport的作用--20150216
  5. Spring MVC 数据验证——validate注解方式
  6. SpringBoot 信息输出
  7. Linux中的软件源详解,Ubuntu Linux 软件源详解
  8. 配置openldap_openldap环境搭建+集成JIRA服务
  9. (23)HTTP 状态消息
  10. asp.net中使用excel类导出Excel文件,并导出到web客户端中遇到的问题
  11. 在CentOs6.5安装jdk
  12. 郑大网教育计算机2017,2017郑大计算机操作系统(计算机).docx
  13. 树形dp 没有上司的舞会
  14. 『晨读』纳什均衡又称为非合作博弈均衡,在一个博弈过程中,
  15. Matlab 画图(全网最优质文章)
  16. RapidMiner介绍与实践(三)K-Means
  17. markdown使用文档(Typora 快捷键)
  18. git-secrets安装教程
  19. iOS开发 - Xcode使用 - 一直indexing
  20. MATLAB plot绘图颜色及配色

热门文章

  1. 如何提高射频信号发生器的性能
  2. 代码传奇 张一鸣的成长之路
  3. apm最高的记录_APM工具使用记录
  4. 计算机公式mode,强大的 Org mode(3): 表格的基本操作及公式、绘图 · ZMonster's Blog...
  5. 无源贴片晶振四角引脚_有源晶振四引脚详细用法
  6. 第六届中国多式联运合作与发展大会暨多式联运示范成果展在京举办
  7. 关于Win8引导菜单风格切换
  8. 肝通宵写了三万字把SQL数据库的所有命令,函数,运算符讲得明明白白讲解,内容实在丰富,建议收藏+三连好评!
  9. 中台建设利器-SPI插件机制
  10. hang计算机术语大全,行业英语学习