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

[复制链接]
发表于 2025-11-4 01:45:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
核心头脑



  • 抽象工厂模式是一种创建型计划模式,它提供一个接口,用于创建一系列相干或相互依赖的对象,而无需指定它们的详细类。抽象工厂模式办理了产物族的题目,可以管理和创建一组相干的产物。



布局

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。






    • 客户端代码完全不必要改动,体系即可使用新的产物族。






与其他模式的关系



  • 在许多计划工作的初期都会使用工厂方法模式 (较为简朴, 而且可以更方便地通过子类举行定制), 随后演化为使用抽象工厂模式、 原型模式或天生器模式 (更机动但更加复杂)。
  • 天生器重点关注怎样分步天生复杂对象。 抽象工厂专门用于生产一系列相干对象。 抽象工厂会立刻返回产物, 生成器则答应你在获取产物前实行一些额外构造步调。
  • 抽象工厂模式通常基于一组工厂方法, 但你也可以使用原型模式来天生这些类的方法。
  • 当只需对客户端代码隐蔽子体系创建对象的方式时, 你可以使用抽象工厂来取代表面模式。
  • 你可以将抽象工厂和桥接模式搭配使用。 假如由桥接界说的抽象只能与特定实现互助, 这一模式搭配就非常有用。 在这种环境下, 抽象工厂可以对这些关系举行封装, 而且对客户端代码隐蔽其复杂性。
  • 抽象工厂、 天生器和原型都可以用单例模式来实现。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表