当前位置: 首页 > news >正文

C++ 设计模式(3. 抽象工厂模式)

  • 抽象工厂模式也是一种创建型设计模式,提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类【引用自大话设计模式第15章】
  • 基本结构
    • 抽象工厂模式包含多个抽象产品接口,多个具体产品类,一个抽象工厂接口和多个具体工厂,每个具体工厂负责创建一组相关的产品。
      通俗解释:
      • 抽象产品接口AbstractProduct: 定义产品的接口,可以定义多个抽象产品接口,比如说沙发、椅子、茶几都是抽象产品。
      • 具体产品类ConcreteProduct: 实现抽象产品接口,产品的具体实现,古典风格和沙发和现代风格的沙发都是具体产品。
      • 抽象工厂接口AbstractFactory: 声明一组用于创建产品的方法,每个方法对应一个产品。
      • 具体工厂类ConcreteFactory: 实现抽象工厂接口,负责创建一组具体产品的对象,在本例中,生产古典风格的工厂和生产现代风格的工厂都是具体实例。
      • 在图示中:AbstractProductA/B/C 就是抽象产品,ConcreteProductA2/A2/B1/B2/C1/C2就是抽象产品的实现,AbstractFactory定义了抽象工厂接口,接口里的方法用于创建具体的产品,而ConcreteFactory就是具体工厂类,可以创建一组相关的产品。

    • 基本实现
      想要实现抽象工厂模式,需要遵循以下步骤:
      • 定义抽象产品接口(可以有多个),接口中声明产品的公共方法。
      • 实现具体产品类,在类中实现抽象产品接口中的方法。
      • 定义抽象工厂接口,声明一组用于创建产品的方法。
      • 实现具体工厂类,分别实现抽象工厂接口中的方法,每个方法负责创建一组相关的产品。
      • 在客户端中使用抽象工厂和抽象产品,而不直接使用具体产品的类名。
    • 应用场景
      • 抽象工厂模式能够保证一系列相关的产品一起使用,并且在不修改客户端代码的情况下,可以方便地替换整个产品系列。但是当需要增加新的产品类时,除了要增加新的具体产品类,还需要修改抽象工厂接口及其所有的具体工厂类,扩展性相对较差。因此抽象工厂模式特别适用于一系列相关或相互依赖的产品被一起创建的情况,典型的应用场景是使用抽象工厂模式来创建与不同数据库的连接对象。
    • 简单工厂、工厂方法、抽象工厂的区别
      • 简单工厂模式:一个工厂方法创建所有具体产品
      • 工厂方法模式:一个工厂方法创建一个具体产品
      • 抽象工厂模式:一个工厂方法可以创建一类具体产品
http://www.lryc.cn/news/430281.html

相关文章:

  • 【PHP入门教程】PHPStudy环境搭建+HelloWorld运行
  • 补 0 输出。
  • 因为嫌吵,在自己家也用上了远程控制电脑
  • vue---echarts环形图
  • 克服编程挫折:从Bug的迷宫中寻找出口与面对算法保持冷静的策略
  • Flink之SQL client使用案例
  • 实际开发中的模块化开发 - 应用到直播间
  • EmguCV学习笔记 VB.Net 第5章 图像变换
  • 【初阶数据结构】顺序表与链表的比较(附题)
  • git-20240822
  • 【时时三省】c语言例题----华为机试题< 数字颠倒>
  • 【前缀和算法】--- 一维和二维前缀和模板
  • 有些信息注定会丢失
  • c#中Task.Run 和使用 Task 构造函数创建任务的区别
  • 使用nginx做代理转发
  • Java前端与后端交互:JSON与XML数据交换 - 掌握现代Web开发的核心技能
  • 网络攻击原理及过程
  • day30(8/16)——ansible
  • fastadmin 安装
  • Unity动画模块 之 3D模型导入基础设置 Rig页签
  • ⭐️Python在Windows命令行(Command Prompt)运行Python脚本或交互式地执行Python代码详解
  • Python | Leetcode Python题解之第355题设计推特
  • D. Beard Graph
  • 使用预训练的 ONNX 格式的 YOLOv8n 模型进行目标检测,并在图像上绘制检测结果
  • mac安装xmind
  • MySQL分区表入门
  • StarRocks 存算分离数据回收原理
  • 【运维】Linux中的xargs指令如何使用?
  • 日志审计-graylog ssh登录超过6次告警
  • 4. kafka消息监控客户端工具