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

抽象工厂模式:Abstract Factory

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

目的

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

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

P.s.

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

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

模式定义

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

要点总结

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

E.g

相关推荐
报错小能手5 小时前
C++笔记——STL map
c++·笔记
思麟呀6 小时前
Linux的基础IO流
linux·运维·服务器·开发语言·c++
QT 小鲜肉7 小时前
【QT/C++】Qt定时器QTimer类的实现方法详解(超详细)
开发语言·数据库·c++·笔记·qt·学习
WBluuue8 小时前
数据结构与算法:树上倍增与LCA
数据结构·c++·算法
执笔论英雄8 小时前
【大模型训练】加载load_state 中的一些技巧 工厂设计模式
设计模式
呆瑜nuage8 小时前
C++之红黑树
c++
亮剑20189 小时前
第2节:程序逻辑与控制流——让程序“思考”
开发语言·c++·人工智能
敲代码的瓦龙9 小时前
操作系统?进程!!!
linux·c++·操作系统
TiAmo zhang10 小时前
现代C++的AI革命:C++20/C++23核心特性解析与实战应用
c++·人工智能·c++20
z1874610300310 小时前
list(带头双向循环链表)
数据结构·c++·链表