抽象工厂模式
相较于工厂模式,我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象。
比如有个海尔工厂,那么抽象工厂需要生产海尔电视机、海尔电冰箱,海尔空调等同类品牌产品。
1.模式的定义
抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。
2.模式结构
抽象工厂模式包含如下角色:
AbstractFactory:抽象工厂
ConcreteFactory:具体工厂
AbstractProduct:抽象产品
Product:具体产品
3.模式适用情况
- 一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有类型的工厂模式都是重要的。
- 系统中有多于一个的产品族,而每次只使用其中某一产品族。
- 属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来。
- 系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于具体实现。
优缺点
扩展产品族符合开闭原则
扩展产品等级结构违背开闭原则