抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
类图如下:
一个例子:在在两种不同的数据库里处理User,Department表的数据
//User类
//IUser类
//SqlServerUser类
//AccessUser类
//于Department相关的类于User类型
//Factory基类
SqlServerFactory
//AccessFactory类
//主类:
在以下情况下应当考虑使用抽象工厂模式:
- 一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。
- 这个系统有多于一个的产品族,而系统只消费其中某一产品族。
- 同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。
- 系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现