andy
最近集中学习了一下李建忠老师的C#设计模式课程,感觉收获特别大,整个知识结构都得到了升华。为了融会贯通设计模式思想。我想通过随笔的形式把设计模式思想整理出来。
首先是创建型模式的抽象工厂ABSTRACT FACTORY。
创建型模式抽象了实例化过程。它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类的创建型模式使用继承来改变被实例化的类,而一个对象的创建型模式则将实例化委托给另一个对象。
ABSTRACT FACTORY
1、意图(intent)
提供一个接口,让其创建一系列相关或相互依赖的对象,而无需指定它们具体的类。
2、动机(motivation)
由于需求的变化往往存在一系列的对象发生变化。
3、适用性
l 一个系统要独立于它的产品的创建、组合和表示时。
l 一个系统要由多个产品系列中的一个来配置时。
l 当强调一系列相关的产品对象的设计以便进行联合使用时。
l 当你提供一系列产品类库,而只想显示它们的接口而不是实现时。
4、结构:
5、参与者
AbstractFactory:声明了创建抽象产品的操作接口。
ConcreteFactory:实现创建具体产品对象的操作。
AbstractProduct:声明了某一类产品对象的接口。
Product:被一个具体工厂创建的产品对象。
Client:只使用AbstractFactory和AbstractProduct接口的客户程序。
6、协作
通常在运行时刻创建一个ConcreteFactory类的实例。这一具体的工厂类创建具有特定实现的一系列产品对象。为了创建不同的产品对象,客户需使用不同的具体工厂。
7、效果
l 分离了具体的类:客户代码只出现接口。
l 方便更换产品系列。
l 有利于产品的一致性。
l 难以支持加入新种类的产品。
a)将工厂作为单件。一个应用中一般每个产品系列只需要一个ConcreteFactory的实例。因此工厂最好实现为一个Singleton。
b)创建产品。
C)定义可扩展的工厂。