抽象工厂模式
00 分钟
2024-11-10
标签
💡
抽象工厂模式适用于创建多个产品族的情况,提供了一种稳定的创建对象的方式,使得系统的扩展性、维护性更强。

定义

抽象工厂模式是一种创建型设计模式,用于提供一个接口来创建一系列相关或相互依赖的对象,而无需指定具体类。它允许客户端通过抽象接口创建不同类型的产品,且这些产品属于同一产品族。
特点:抽象工厂模式更适合需要创建多个相关产品的场景,并有助于保持产品族的一致性。

结构

抽象工厂模式的主要结构包括以下角色:
  • 抽象工厂(AbstractFactory):定义用于创建一族产品的抽象方法。
  • 具体工厂(ConcreteFactory):实现抽象工厂,生成一组相关的具体产品。
  • 抽象产品(AbstractProduct):定义产品的接口。
  • 具体产品(ConcreteProduct):实现抽象产品接口,提供实际产品。

类图

代码实现

以下代码实现了一个抽象工厂模式示例,用于创建两个产品类型(产品A和产品B)的不同实现。

优点

  • 符合开闭原则:添加新产品族时,无需修改已有代码。
  • 隔离客户端与具体实现:客户端只需知道抽象接口,不直接依赖具体类。
  • 一致性:确保产品族中的对象具有一致性。

缺点

  • 增加复杂性:添加一个产品族,需要增加多个类,代码较为庞大。
  • 不适合频繁更改产品结构的场景:每次更改产品结构,都可能影响抽象工厂的定义。

使用场景

  • 创建多种相关产品,并且希望客户端不依赖具体类。
  • 产品族有相同的接口或抽象基类,但具体实现不同。
  • 产品族扩展频繁,需支持创建更多的新产品族。

抽象工厂模式与其他工厂模式对比

  • 简单工厂模式:适合产品种类少的情况,集中在一个工厂类中实现,容易变得庞大。
  • 工厂方法模式:每个工厂只负责创建一种产品,适合单一产品的扩展性要求。
  • 抽象工厂模式:创建多个产品族的对象,适合产品种类较多、扩展性要求较高的场景。
 
上一篇
很鸡儿扯的报错
下一篇
说明

评论
Loading...