抽象工厂模式,重读设计模式:3、创建型模式-ABSTRACT FACTORY(抽象工厂)

1、目的:
提供一个创建一系列相关或相互依赖对象的接口而无需指定它们具体的类。
2、适用情况:
1)一个系统要独立于它的产品的创建、组合和表示时;
2)一个系统要由多个产品系列中一个来配置时;
3)当你要强调一系列相关的产品对象的设计以便联合使用时;
4)当你提供一个产品类库,而只想显示他们的接口,而不是实现时。
5、结构
image抽象工厂模式,重读设计模式:3、创建型模式-ABSTRACT FACTORY(抽象工厂)
6、效果
抽象工厂方法有以下优点和缺点:
1)、Abstract Factory 分离了具体的类,它帮助你控制一个应用创建的对象类。因为一个工厂封装创建产品的责任和过程,它将客户与类的实现分离,客户通过他们的抽象接口操纵实例。产品的类名也在具体工厂的实现中被分离,它们不出现在客户的代码中。
2)、它使得易于交换产品系列,一个具体工厂类在应用中仅出现一次,即工厂在初始化的时候。这使得改变一个应用的具体工厂变得很容易。只需要改变具体的工厂就可以使用不同的产品配置,这是因为一个抽象工厂创建了一个完整的产品系列,所以整个产品系列会立即改变。
3)、它有利于产品的一致性,当一系统的产品对象被设计成一起工作时,一个应用一次只能使用同一个系列中的对象。
4)、难以支持新种类的产品,难以扩展抽象工厂生产新种类的产品,因为抽象工厂方法确定了可以被创建的产品集合。支持新种类的产品,就需要扩展工厂的接口,但是这种改变涉及到抽象工厂类及其所有子类的改变。
7、抽象工厂模式的有用技术:
1)、将工厂作为单例,一般一个应用中,一个工厂只需要一个实例,因此最好实现为一个单例
2)、创建产品,AbstractFactory只声明一个创建产品的接口,具体的实现同子类完成。最通常的方法是对每一类产品定义一个工厂方法。一个具体的工厂将为每个产品重定义该工厂方法,以指定产品。
3)、定义可扩展的工厂,AbstractFactory通常为每一种它可以生产的产品定义一个操作。产品的种类被编码在程序中。增加一个产品,需要修改AbstractFactory的接口及其所有的子类。一个更灵活但是不太安全的设计是给创建对象的操作增加一个参数。该参数指定了被创建的对象的种类。
8、相关模式
AbstractFactory类通常使用Factory Mathod 实现,但是它们也可以使用Prototype来实现
一个具体的工厂,通常是一个单例。
Tags:  工厂与抽象工厂 什么是抽象工厂 抽象工厂 抽象工厂模式

延伸阅读

最新评论

发表评论