Update 03.AbstractFactory.md
parent
3e8904b9eb
commit
88241f7a07
|
@ -17,23 +17,25 @@
|
||||||
- **抽象工厂(AbstractFactory)**:所有生产具体产品的工厂类的基类,提供工厂类的公共方法;
|
- **抽象工厂(AbstractFactory)**:所有生产具体产品的工厂类的基类,提供工厂类的公共方法;
|
||||||
- **具体工厂(ConcreteFactory)**:生产具体的产品
|
- **具体工厂(ConcreteFactory)**:生产具体的产品
|
||||||
- **抽象产品(AbstractProduct)**:所有产品的基类,提供产品类的公共方法
|
- **抽象产品(AbstractProduct)**:所有产品的基类,提供产品类的公共方法
|
||||||
- **具体产品(ConcreteProduct)**:具体的产品类
|
- **具体产品(ConcreteProduct)**:具体的产品类
|
||||||
抽象工厂模式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%9B%BE.png)
|
||||||
|
|
||||||
结合抽象工厂模式定义和UML,可以看到具体工厂ConcreteFactory_A可以生产两种产品,分别是ConcreteProduct_A_1和ConcreteProduct_A_2,另一个具体工厂ConcreteFactory_B同理。客户端使用时,需要声明一个抽象工厂*AbstractFactory*和两个抽象产品*AbstractProduct*。
|
结合抽象工厂模式定义和UML,可以看到具体工厂ConcreteFactory_A可以生产两种产品,分别是ConcreteProduct_A_1和ConcreteProduct_A_2,另一个具体工厂ConcreteFactory_B同理。客户端使用时,需要声明一个抽象工厂*AbstractFactory*和两个抽象产品*AbstractProduct*。
|
||||||
|
|
||||||
# 3.抽象工厂模式代码实例
|
# 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想要进行户外运动,它可以选择打篮球和踢足球。
|
||||||
但这次Jungle不想弄脏原本穿的T恤,所以Jungle还需要穿球衣,打篮球就穿篮球衣,踢足球就穿足球衣。
|
但这次Jungle不想弄脏原本穿的T恤,所以Jungle还需要穿球衣,打篮球就穿篮球衣,踢足球就穿足球衣。
|
||||||
篮球保管室可以提供篮球和篮球衣,足球保管室可以提供足球和足球衣。
|
篮球保管室可以提供篮球和篮球衣,足球保管室可以提供足球和足球衣。
|
||||||
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.定义产品类
|
## 3.1.定义产品类
|
||||||
|
@ -239,4 +241,4 @@ Jungle wear Football Shirt
|
||||||
## 适用环境:
|
## 适用环境:
|
||||||
|
|
||||||
- 一系列/一族产品需要被同时使用时,适合使用抽象工厂模式;
|
- 一系列/一族产品需要被同时使用时,适合使用抽象工厂模式;
|
||||||
- 产品结构稳定,设计完成之后不会向系统中新增或剔除某个产品
|
- 产品结构稳定,设计完成之后不会向系统中新增或剔除某个产品
|
||||||
|
|
Loading…
Reference in New Issue