大话设计模式读书笔记--11.抽象工厂模式
定义
抽象工厂模式定义:
提供一个创建一系列相关或相关依赖对象的接口,而无需指定他们具体的类
抽象工厂模式通常是用于创建一族产品,并且这族产品分不同的等级;不同的具体工厂类生产不同等级的一族产品
比如下图(来源于网络)
两厢车和三厢车称为两个不同的等级结构;2.0排量两厢车和2.0排量三厢车成为同一个产品族。
与工厂方法模式的区别
工厂的产品全部属于同一个等级结构,则属于工厂方法模式;如果工厂的产品来自多个等级结构,则属于抽象工厂模式
模式结构
下图来源于网络
AbstractFactory:是一个抽象工厂,包含所有产品创建的的抽象方法
ProductA和我ProductB: 是抽象产品,之所以抽象,是因为有两种不同的实现
代码实现
场景: sqlServer数据库中有两User表和Department表, 由于客户需求,需要把sqlServer数据库换成Access数据库
场景分析: User相当于抽象产品ProductA, sqlServer数据库的User相当于ProductA1
点击下载代码: 抽象模式实现
点击下载代码: 简单工厂+反射+配置文件
特点及使用场景
优点: 在类内部对产品族的关联关系进行定义和描述,而不必专门引入一个新的类来进行管理
缺点: 扩展困难,产品族中需要增加一个新的产品,则几乎所有的工厂类都需要进行修改
使用场景: 就是一个继承体系中,如果存在着多个等级结构(即存在着多个抽象类),
并且分属各个等级结构中的实现类之间存在着一定的关联或者约束,就可以使用抽象工厂模式
祝:
大家生活愉快,工作顺利