From 88241f7a07e735057e97f92f39e96bd8db455947 Mon Sep 17 00:00:00 2001 From: Qiangguo Feng <32355651+FengJungle@users.noreply.github.com> Date: Wed, 15 Sep 2021 21:47:18 +0800 Subject: [PATCH] Update 03.AbstractFactory.md --- 03.AbstractFactory/03.AbstractFactory.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/03.AbstractFactory/03.AbstractFactory.md b/03.AbstractFactory/03.AbstractFactory.md index ca8ece3..a944f17 100644 --- a/03.AbstractFactory/03.AbstractFactory.md +++ b/03.AbstractFactory/03.AbstractFactory.md @@ -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 ## 适用环境: - 一系列/一族产品需要被同时使用时,适合使用抽象工厂模式; -- 产品结构稳定,设计完成之后不会向系统中新增或剔除某个产品 \ No newline at end of file +- 产品结构稳定,设计完成之后不会向系统中新增或剔除某个产品