抽象工厂模式:是一种创建型设计模式,它提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。(可以有多个工厂,每个具体工厂生产一组产品,这些产品共同构成了一个产品家族。每个工厂方法负责创建单个产品,并且每个工厂方法返回的产品都属于同一产品家族)
优点:
- 抽象工厂模式隐藏了具体产品的实现细节,使得代码更容易维护。
- 由于每个具体工厂类只负责创建特定产品家族的对象,因此通过使用抽象工厂模式,可以确保系统中的所有产品都是兼容的。
- 可以轻松地替换产品系列,因为生产产品的具体工厂是相互独立的,而且不需要修改客户端代码。
缺点:
- 当需要添加新的产品族时,需要修改抽象工厂接口和所有的具体工厂类,这可能会导致一些风险。
- 增加新的产品族和产品等级结构都比较困难,因为需要更改抽象工厂接口和所有的具体工厂类。
抽象工厂模式包含四个角色:
抽象产品类:定义产品的接口,包含产品的属性和方法。
具体产品类:实现抽象产品类的接口,具体实现产品的属性和方法。
抽象工厂类:定义工厂的接口,包含创建产品的方法。
具体工厂类:实现抽象工厂类的接口,具体实现创建产品的方法。
抽象产品类:
1 | public interface ProductA { |
具体产品类:
1 | public class ConcreteProductA1 implements ProductA { |
抽象工厂类:
1 | public interface AbstractFactory { |
具体工厂类:
1 | public class ConcreteFactory1 implements AbstractFactory { |
客户端代码:
1 | public class Client { |
简单工厂模式适用于创建单一产品的情况,工厂方法模式适用于创建多种产品的情况,而抽象工厂模式则适用于创建一组具有相互依赖关系的产品族的情况
- 本文作者: zzr
- 本文链接: http://zzruei.github.io/2023/044bdc9a59.html
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!