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

抽象工厂模式:Abstract Factory

链接:抽象工厂模式实例代码 + 解析

目的

  • 在软件系统中,经常面临着"一系列相互依赖的对象工作";同时,由于需求的变化,往往存在更多系列对象的创建工作。

  • 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种"封装机制"来避免客户程序和这种"多系列具体对象创建工作"的紧耦合。

P.s.

抽象工厂本质是对工厂模式的延续,在工厂模式中我们是把同一批基于同一个的基/父类 的创建都使用单独的工厂 创建,但是又是虽然来自不同基类的类也有相关性,此时我们将其耦合在一起使用一个工厂创建反而会提高效率也没有其它的坏处,比如:对同一个链接的操作的类,虽然不同的行为的父类是不同的,但是他们都是针对同一个链接,此时我们就可以使用一个类将所有行为都放在一起并使用一个工厂创建。

注:由于使用同一个工厂创建,该工厂会将所有的成员都创建包括不用的也会。(也可以使用装饰模式去叠加工厂,做到自定义工厂)

模式定义

提供一个接口,让该接口负责创建一系列"相关或者相互依赖的对象",无需指定它们具体的类。 ------《设计模式》GoF

要点总结

  • 如果没有应对"多系列对象创建"的需求变化,则没有必要使用Abstract Factory模式,这时候使用简单的工厂即可。
  • "系列对象"指的是在某一个特定系列的对象之间有相互依赖、或作用的关系。不同系列的对象之间不能相互依赖。
  • Abstract Factory模式主要在于应用"新系列"的需求变动。其缺点在与难以应对"新对象"的需求变动。

E.g

相关推荐
saltymilk8 小时前
使用 C++ 模拟 ShaderLanguage 的 swizzle
c++·模板元编程
xlp666hub15 小时前
Leetcode第五题:用C++解决盛最多水的容器问题
linux·c++·leetcode
程序员Terry16 小时前
同事被深拷贝坑了3小时,我教他原型模式的正确打开方式
java·设计模式
得物技术16 小时前
搜索 C++ 引擎回归能力建设:从自测到工程化准出|得物技术
c++·后端·测试
刀法如飞1 天前
AI时代,程序员都应该是算法思想工程师
人工智能·设计模式·程序员
xlp666hub2 天前
Leetcode 第三题:用C++解决最长连续序列
c++·leetcode
会员源码网2 天前
构造函数抛出异常:C++对象部分初始化的陷阱与应对策略
c++
xlp666hub2 天前
Leetcode第二题:用 C++ 解决字母异位词分组
c++·leetcode
在西安放羊的牛油果2 天前
我把 2000 行下单代码,重构成了一套交易前端架构
前端·设计模式·架构
不想写代码的星星2 天前
static 关键字:从 C 到 C++,一篇文章彻底搞懂它的“七十二变”
c++