「全网最细 + 实战源码案例」设计模式——抽象工厂模式

核心思想

  • 抽象工厂模式是一种创建型设计模式,它提供一个接口,用于创建一系列相关或互相依赖的对象,而无需指定它们的具体类。抽象工厂模式解决了产品族的问题,可以管理和创建一组相关的产品。

结构

1. 抽象工厂

  • 定义创建一些列相关对象的接口。

2. 具体工厂

  • 实现抽象工厂接口,负责实例化具体的产品对象。

3. 抽象产品

  • 定义一类产品的接口。

4. 具体产品

  • 实现抽象产品接口,提供具体产品的功能。

适用场景

1. 系统需要创建一系列相关或互相依赖的对象。

2. 系统的产品族固定,但产品种类经常变化。

3. 需要保证同一个工厂生成的产品族之间的兼容性。


优缺点

优点:

1.1. 分离接口和实现:客户端通过抽象工厂、抽象产品与具体工厂、具体产品解耦。

1.2. 产品族管理方便:保证同一产品族对象的一致性。

1.3. 扩展性好:支持新增具体工厂来扩展新的产品族。

缺点:

1.1. 产品族扩展困难:如果新增产品族,需要修改抽象工厂及所有具体工厂接口。

1.2. 复杂性增加:需要增加多个类,代码结构更复杂。


示例

1. 普通版

2. 改进版------配置文件+反射

  • 在改进版的抽象工厂模式中,我们通过配置文件反射机制动态决定具体工厂的选择,减少客户端对具体工厂和具体产品的硬编码依赖,使系统更灵活、更易扩展。
  • 新增产品族示例
    • 如果需要新增一个产品族(如 ChineseStyleFactory),只需:
      • 新增具体咖啡类 Coffee3 和 甜品类Dessert3
      • 新增具体工厂类 ChineseStyleFactory实现 CoffeeDessertFactory
      • 修改配置文件 factory=com.colin.patterns.creational_patterns.config_abstract_factory.ChineseStyleFactory
    • 客户端代码完全不需要改动,系统即可使用新的产品族。

与其他模式的关系

相关推荐
caibixyy20 分钟前
Spring Boot 整合 Redisson 实现分布式锁:实战指南
spring boot·分布式·后端
码事漫谈34 分钟前
C++编程陷阱:悬空引用检测方法与防范指南
后端
码事漫谈35 分钟前
缓存友好的数据结构设计:提升性能的关键技巧
后端
StevenGerrad1 小时前
【读书笔记】架构整洁之道 P2~3 编程范式&设计原则
设计模式·架构·软件工程
ccccczy_1 小时前
Spring Security 深度解读:JWT 无状态认证与权限控制实现细节
java·spring security·jwt·authentication·authorization·securityfilterchain·onceperrequestfilter
Lin_Aries_04211 小时前
容器化 Tomcat 应用程序
java·linux·运维·docker·容器·tomcat
sheji34161 小时前
【开题答辩全过程】以 springboot高校社团管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
zzywxc7872 小时前
大模型落地实践指南:从技术路径到企业级解决方案
java·人工智能·python·microsoft·golang·prompt
相与还2 小时前
IDEA+SpringBoot实现远程DEBUG到本机
java·spring boot·intellij-idea
聆风吟º2 小时前
远程录制新体验:Bililive-go与cpolar的无缝协作
开发语言·后端·golang