设计模式---抽象工厂模式

一、什么是抽象工厂模式

抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。

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

二、抽象工厂模式的结构

图片来自网络 

三、模式中包含的角色及其职责

1.抽象工厂(AbstractFactory)角色

抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。

2.具体工厂( ConcreteFactory)角色

具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。

3.抽象(AbstractProduct)角色

抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

4.具体产品(ConcreteProduct)角色

抽象模式所创建的具体实例对象

5.客户端(Client)角色

主要使用抽象工厂来获取一系列所需要的产品对象,然后面向这些产品对象的接口编程,以实现所需要的功能

总结:抽象工厂中方法对应产品结构,具体工厂对应产品族。

关于产品结构和产品族,请参考自https://blog.csdn.net/LoveLion/article/details/9319323

四、代码示例

五、理解抽象工厂模式

认识抽象工厂模式

1.功能

为一系列相关对象或相互依赖的对象创建一个接口。

2.实现成接口

AbstractFactory通常实现为接口,而不是抽象类

3.使用工厂方法

AbstractFactory定义了创建产品所需要的接口,具体的实现是在实现类里,通常在实现类里就需要选择多种更具体的实现,所以AbstractFactory定义的创建产品的方法可以看成是工厂方法,而这些工厂方法的具体实现就延迟到了具体工厂里面,也就是说使用工厂方法来实现抽象工厂。

抽象工厂和DAO

在实现DAO模式的时候,最常见的实现策略就是使用工厂的策略,而且多是通过抽象工厂模式来实现,当然在使用抽象工厂来实现的时候,可以结合工厂方法模式。因此DAO模式和抽象工厂模式有很大的联系。

抽象工厂模式的优缺点

1.分离接口和实现

2.使得切换产品族变得容易

3.不容易扩展新的产品

4.容易造成类层次复杂

思考抽象工厂模式

本质

选择产品族的实现

何时选用

1.如果希望一个系统独立于它的产品的创建,组合和表示的时候,换句话说,希望一个系统只是知道产品的接口,而不关心具体实现的时候

2.如果一个系统要由多个产品系列中的一个来配置的时候,换句话说,就是可以动态的切换产品族的时候

3.如果要强调一系列相关产品的接口,以便联合使用他们的时候

发布了82 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/a972669015/article/details/103067778