设计模式 抽象工厂模式
本文将介绍设计模式中的抽象工厂模式。
一、什么是抽象工厂模式?
提供一个声明了一系列相关产品的创建方法的接口,让具体的工厂类实现这一系列方法,从而创建出一系列对应的产品。
二、产品等级结构和产品族
产品等级结构:
- 即产品的继承结构
- 抽象产品为父类,具体产品为子类
电视
与长虹电视、索尼电视、海尔电视。。。
便构成了一个产品等级结构产品族:
- 由同一个工厂生产的,但位于不同产品等级结构的一组产品
海尔电视、海尔冰箱、海尔洗衣机、。。。
三、实现
1. 结构
2. 角色
- Factory 抽象工厂:
- 所有工厂的抽象类
- 定义了一组创建一族产品的方法,这些方法应该被所有的具体工厂实现
- ConcreteFactory 具体工厂:
- 抽象工厂的子类
- 负责创建一系列对应的产品
- Product 抽象产品:
- 所有产品的父类
- 封装了所有产品的公用方法
- ConcreteProduct 具体产品:
- 创建目标
3. 简单示例
Factory:
1 |
|
ConcreteFactory:
1 |
|
四、优缺点
1. 优点
增加新的产品族很方便
增加产品及具体工厂即可
适用于系统中需要使用一族不同产品的情况
2. 缺点
增加新的产品等级结构很麻烦
需要修改抽象工厂类和所有的具体工厂类
参考
- 《Java 设计模式》