一、简单工厂(单个工厂)
二、抽象工厂(多个工厂)
三. 模式总结
主要优点
1. 屏蔽了产品的具体创建过程,使用简单。
2. 满足开闭原则,具有更高的扩展性。
其缺点是:每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,这增加了系统的复杂度。
模式角色
抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。
具体工厂(ConcreteFactory):主要是实现抽象工厂中的抽象方法,完成具体产品的创建。
抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能。
具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。
应用场景
1. 客户只知道创建产品的工厂名,而不知道具体的产品名。
2. 创建对象的任务由多个具体子工厂中的某一个完成,而抽象工厂只提供创建产品的接口。
3. 客户不关心创建产品的细节,只关心产品的品牌。