Update 03.AbstractFactory.md

master
Qiangguo Feng 2021-09-15 21:47:18 +08:00 committed by GitHub
parent 3e8904b9eb
commit 88241f7a07
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 8 deletions

View File

@ -17,23 +17,25 @@
- **抽象工厂AbstractFactory**:所有生产具体产品的工厂类的基类,提供工厂类的公共方法;
- **具体工厂ConcreteFactory**:生产具体的产品
- **抽象产品AbstractProduct**:所有产品的基类,提供产品类的公共方法
- **具体产品ConcreteProduct**:具体的产品类
抽象工厂模式UML类图如下
- **具体产品ConcreteProduct**:具体的产品类
抽象工厂模式UML类图如下
![avatar](https://github.com/FengJungle/DesignPattern/blob/master/03.AbstractFactory/1.Picture/%E6%8A%BD%E8%B1%A1%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8FUML%E5%9B%BE.png)
结合抽象工厂模式定义和UML可以看到具体工厂ConcreteFactory_A可以生产两种产品分别是ConcreteProduct_A_1和ConcreteProduct_A_2另一个具体工厂ConcreteFactory_B同理。客户端使用时需要声明一个抽象工厂*AbstractFactory*和两个抽象产品*AbstractProduct*。
# 3.抽象工厂模式代码实例
考虑这样一个场景,如下图:
考虑这样一个场景,如下图:
![avatar](https://github.com/FengJungle/DesignPattern/blob/master/03.AbstractFactory/1.Picture/%E6%8A%BD%E8%B1%A1%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F%E5%AE%9E%E4%BE%8B%E5%9B%BE.png)
```
Jungle想要进行户外运动它可以选择打篮球和踢足球。
但这次Jungle不想弄脏原本穿的T恤所以Jungle还需要穿球衣打篮球就穿篮球衣踢足球就穿足球衣。
篮球保管室可以提供篮球和篮球衣,足球保管室可以提供足球和足球衣。
Jungle只要根据心情去某个保管室就可以换上球衣、拿上球然后就可以愉快地玩耍了。
```
对应的UML实例图如下图
对应的UML实例图如下图
![avatar](https://github.com/FengJungle/DesignPattern/blob/master/03.AbstractFactory/1.Picture/%E6%8A%BD%E8%B1%A1%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8FUML%E5%AE%9E%E4%BE%8B%E5%9B%BE.png)
## 3.1.定义产品类
@ -239,4 +241,4 @@ Jungle wear Football Shirt
## 适用环境:
- 一系列/一族产品需要被同时使用时,适合使用抽象工厂模式;
- 产品结构稳定,设计完成之后不会向系统中新增或剔除某个产品
- 产品结构稳定,设计完成之后不会向系统中新增或剔除某个产品