简单工厂
又称“静态工厂方法模式”
组成:
- 一个工厂类
- 一个工厂类的静态生产方法
- 条件判断(根据不同条件
new
相应的对象,如名称),违背了开闭原则,有新的产品需要修改代码 - 改进,根绝反射的方式
new
对象
- 条件判断(根据不同条件
- 一个产品接口
- 多个产品类
代码示例
产品接口
1 |
|
具体产品类
1 |
|
1 |
|
简单工厂类
1 |
|
工厂方法
又称多态性工厂(Polymorphic Factory)模式或虚拟构造子(Virtual Constructor)模式;
特点
在简单工厂的基础上对工厂进行了抽象
组成
- 一个抽象工厂类
- 多个具体工厂类
- 一个抽象产品类
- 多个具体产品类
代码示例
抽象工厂
1 |
|
多个具体工厂
1 |
|
1 |
|
抽象产品及产品类如简单工厂
抽象工厂模式
又称工具箱(Kit 或Toolkit)模式
特点
在工厂模式基础上,每个工厂可以生产多个相关的产品;使用于一个系统需要一组对象共同完成任务,且比较稳定,不会频繁变化
组成
- 一个抽象工厂类,有生产不同产品的接口
- 多个具体工厂类
N
个抽象产品类M×N
个具体产品类
代码示例
在上面示例的基础上,增加了一个产品
Color
抽象工厂类
1 |
|
具体工厂类
1 |
|
1 |
|
抽象产品类
Shape
见上面的代码,此处只有Color
1 |
|
具体产品类
1 |
|
1 |
|