Abstract Factory (抽象工厂)–对象创建模式

一、意图
提供一个创建一系列相关或者相互依赖的接口,而无需指定它们具体的类。

二、动机
1.在软件系统中,经常面临着“一系列相互依赖的对象”的创建工 作;同时,由于需求的变化,往往存在更多系列对象的创建工作。
2.如何应对这种变化?如何绕过常规的对象创建方法(new),提供一 种“封装机制”来避免客户程序和这种“多系列具体对象创建工作” 的紧耦合?

三、适用性
1.一个系统要独立于它的产品的创建、组合和表示时。
2.一个系统要由多个产品系列中的一个来配置时。
3.当你要强调一系列相关产品对象的设计以便进行联合使用时。
4.当你提供一个产品类库、而只想显示它们的接口而不是实现时。

四、结构

五、效果
1.它分离了具体的类。
2.它使得易于交换产品系列。
3.它有利于产品的一致性。
4.难以支持新种类的产品。

六、实现
1.将工厂作为单件。
2.创建产品。
3.定义可扩展的工厂。

七、要点总结
1.如果没有应对“多系列对象构建”的需求变化,则没有必要使用 Abstract Factory模式,这时候使用简单的工厂完全可以。
2.“系列对象”指的是在某一特定系列下的对象之间有相互依赖、 或作用的关系。不同系列的对象之间不能相互依赖。
3.Abstract Factory模式主要在于应对“新系列”的需求变动。其缺点在于难以应对“新对象”的需求变动。
4.所有餐品都将返回类型所给的相同的抽象接口返回给客户。客户将不能区分或对一个产品的类型进行安全的假定。如果一个客户需要进行与特定的子类相关的操作,而这些操作却不能通过抽象的接口得到。虽然可以实现一个向下类型转型,但这并总是可行或安全的。

八、举例说明
家具工厂,要建椅子、凳子、桌子等,有些客户可能要木质的,有些客户可能要竹制的,还有些药塑料制的等,比较适合抽象工厂模式,根据具体不同(材质)系列工厂提供相应的产品。

本文为李建忠设计模式视频的笔记以及《设计模式-可复用面向对象的软件的基础》和自己的部分见解

Abstract Factory(抽象工厂)--对象创建模式相关推荐

  1. 设计模式学习总结1 - 创建型1 - Abstract Factory抽象工厂模式

    AbstractFactory抽象工厂模式(创建型) 作用: 这种模式支持创建不同的对象,这些对象功能接近且一般都是在一起创建的.抽象工厂被具体化成不同的工厂来创建类似产品的不同产品.这种模式将类于使 ...

  2. Abstract Factory抽象工厂模式

    抽象工厂模式是是用一个超级工厂去创建其他工厂,简单点说就是工厂的父类,属于创建型模式. 目标:提供一个创建一组对象的方法,而无需指定它们具体的类(同工厂方法). 使用场景:系统的产品有多于一个的产品族 ...

  3. 笔记:设计模式(3)-Abstract Factory抽象工厂模式

      工厂模式的起源 1.变化点在"对象的创建",因此就封装"对象创建": 2.面向接口编程,依赖接口,而非依赖实现. 动机(Motivation) 在系统中,经 ...

  4. Java 设计模式之 Abstract Factory 抽象工厂模式

    在工厂方法基础上,将工厂的生产方法的返回类型从具体产品抽象为抽象产品,同时扩展工厂的方法,支持任意定制产品族,则工厂方法可以升级为抽象工厂模式,比如一家餐厅可以提供牛排(方法A),红酒(方法B),蔬菜 ...

  5. 09Abstract Factory(抽象工厂)模式

    技术交流QQ群:1027579432,欢迎你的加入! 1.Abstract Factory(抽象工厂)模式动机 在软件系统中,经常面临着一系列相互依赖的对象的创建工作.同时,由于需求的变化,往往存在更 ...

  6. 李建忠设计模式之“对象创建”模式

    文章目录 工厂方法模式(Factory Method) 定义 动机 结构图 代码 要点 总结 抽象工厂模式(Abstract Factory) 定义 动机 结构图 代码 要点 总结 原型模式(Prot ...

  7. Prototype(原型)--对象创建模式

    Prototype(原型)–对象创建模式 一.意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 二.动机 1.在软件系统中,经常面临着"某些结构复杂的对象"的 ...

  8. Singleton(单件)--对象创建模式

    Singleton(单件)–对象创建模式 一.意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 二.动机 1.在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能 ...

  9. 设计模式、原则、饿汉式单例模式、抽象工厂、代理模式、观察者模式、模板方法模式使用场景

    设计模式 ​ 对各种面向对象方法的一种总结.前辈们遇到了好多设计问题,然后利用面向对象解决了.然后他们把解决方案汇总起来,形成了20多种设计模式.它可以有效的帮助我们利用面向对象,来提高代码的复用性. ...

最新文章

  1. MFC中小笔记(三)
  2. 工厂模式 Factory
  3. B站获得英雄联盟赛事直播三年独播版权
  4. 力扣-386 字典序排数
  5. springboot自定义异常(全局捕获)
  6. android 自定义输入法布局,Android 输入法详解
  7. Linux学习笔记之 Btrfs文件系统简介及使用
  8. hadoop大数据平台搭建
  9. 微信打开链接提示用浏览器打开
  10. leaf Variable、requires_grad、grad_fn的含义以及它们之间的关系
  11. 面向对象-抽象类与接口
  12. 华为鸿蒙0系统桌面图标不能移动,win10桌面图标无法移动怎么办_win10为什么不能拖动桌面图标...
  13. python opcua使用教程
  14. 使用苹果发布证书打包好的ipa如何安装到ios手机上测试
  15. WiFi模块的AP模式和STA模式
  16. python中如何打开文件选择框
  17. 电视2k和4k有什么区别
  18. day6邮件自动发送
  19. 屏幕截图--截取全屏幕
  20. 计算机无法识别u盘,电脑无法识别u盘无法读取u盘的解决方法

热门文章

  1. Android之实现点击布局缩小然后再放大动画
  2. Android之用HttpURLConnection断点下载谷歌云存储(google cloud storage)文件
  3. LeetCode之Missing Number
  4. 如何快速学习freemarker以及使用经验
  5. html td显示隐藏,显示/隐藏Html TR/TD
  6. 元素周期表排列的规律_中考化学:金属活动性顺序表和元素周期表规律总结
  7. python如何开启多线程_Python如何创建多线程
  8. 06-广度优先搜索:图、队列
  9. 一元二次方程求根公式的花样变换,你看懂了吗?
  10. 波的折射现象,你都了解吗?