大话设计模式读书笔记--11.抽象工厂模式

定义

抽象工厂模式定义:

提供一个创建一系列相关或相关依赖对象的接口,而无需指定他们具体的类

抽象工厂模式通常是用于创建一族产品,并且这族产品分不同的等级;不同的具体工厂类生产不同等级的一族产品

比如下图(来源于网络)

两厢车和三厢车称为两个不同的等级结构;2.0排量两厢车和2.0排量三厢车成为同一个产品族。

与工厂方法模式的区别

工厂的产品全部属于同一个等级结构,则属于工厂方法模式;如果工厂的产品来自多个等级结构,则属于抽象工厂模式

模式结构

下图来源于网络

AbstractFactory:是一个抽象工厂,包含所有产品创建的的抽象方法

ProductA和我ProductB: 是抽象产品,之所以抽象,是因为有两种不同的实现

代码实现

场景:  sqlServer数据库中有两User表和Department表, 由于客户需求,需要把sqlServer数据库换成Access数据库

场景分析: User相当于抽象产品ProductA, sqlServer数据库的User相当于ProductA1

点击下载代码: 抽象模式实现

点击下载代码: 简单工厂+反射+配置文件

特点及使用场景

优点:  在类内部对产品族的关联关系进行定义和描述,而不必专门引入一个新的类来进行管理

缺点:  扩展困难,产品族中需要增加一个新的产品,则几乎所有的工厂类都需要进行修改

使用场景:  就是一个继承体系中,如果存在着多个等级结构(即存在着多个抽象类),

              并且分属各个等级结构中的实现类之间存在着一定的关联或者约束,就可以使用抽象工厂模式

posted @ 2017-02-23 23:07  liuconglin  阅读(1300)  评论(0编辑  收藏  举报