抽象工厂模式
- 基本思想:分而冶之、组合工厂到抽象类、每个工厂具体实现、再封装一层工厂选择
工厂模式的实现和本质
-
所谓工厂模式就是一对多的模式,一个工厂封装,工厂可以生产各种产品 ,比如画(画正方式,圆形,三角形)每个形状是独立的类(生产线),工厂对其封装,提供一个访问接口让客户调用。
-
实质上是通过工厂类来封装1对多的关系
抽象工厂模式
-
实质上是多条不同产品线,如画产品和涂产品。
-
实质上抽象工厂模式的实现也是一样的,只是多封装一层
实现步骤:
- 先有画接口、涂接口
- 为画和图抽象出一个
public abstract class AbstractFactory抽象类来组合两条生产线,封装以组合成一个(其实就是多封装一层抽象类来组合两个工厂) - 分别为封装组合的抽象类来实现具体的工厂类(这个比较特殊,因为是组合两个工厂,所以有一个要为空)
- 创建一个工厂创造器/生成器类,通过传递形状或颜色信息来获取工厂。
public class FactoryProducer - 最后就可以通过在工厂创造器类来画和涂
难点在于抽象类的每个工厂类具体实现,要忽略另一个工厂类。两个工厂类要保持单一职责。
参考文档: