抽象工厂模式
抽象工作就是 表示针对工厂方法进一步抽象化,用于工厂方法本身也需要抽象集中管理的情况。
他是“分类之后的一对一服务”,我们有多个系列的类需要创建,让某一个工厂专门负责某一类对象的创建,另一个工厂负责另外一类的对象创建。
总结:
简单工厂模式:集中式生产
工厂方法模式:分散式成产
抽象工厂模式:对于同一系列的集中式生产,对于不同系列的分散式生产(这不就是前二者的结合嘛)
代码
比如我有很多的类需要定义,包括形状(比如Circle、Rectangle、Ellipse、Triangle),颜色类(比如Red、Blue、Black等等)
下面我将从一个“四步走”策略完整实现抽象工厂模式“
1、第一步,先定义形状类这个系列
1 |
|
2、第二步,再定义颜色类这个系列
1 |
|
第三步,定义抽象工厂以及与每一个系列对应的工厂
1 | class IFactory: #模拟接口 |
注意:这里的抽象工厂和“工厂方法模式里面的抽象工厂有点区别,因为这里有两个系列的类型需要产生,所以,抽象工厂里面需要有两个函数接口,一个产生”形状“,一个产生”颜色“,然后再在实现该接口的工厂中分别进行重写。
第四步,定义产生工厂类的类——抽象工厂模式的核心所在
1 | #定义一个专门产生工厂的类 |
解析
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。(这里的FactoryProducer就是超级工厂)
在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。