From 3dd3a1438542e6901a3e23339801d9ca07451583 Mon Sep 17 00:00:00 2001
From: CyC2018 <1029579233@qq.com>
Date: Fri, 16 Mar 2018 22:30:16 +0800
Subject: [PATCH] auto commit
---
notes/设计模式.md | 28 +++++++++++++++++-----------
1 file changed, 17 insertions(+), 11 deletions(-)
diff --git a/notes/设计模式.md b/notes/设计模式.md
index 5d5d9619..3f3dee15 100644
--- a/notes/设计模式.md
+++ b/notes/设计模式.md
@@ -6,7 +6,7 @@
* [工厂模式](#工厂模式)
* [1. 简单工厂](#1-简单工厂)
* [2. 工厂方法模式](#2--工厂方法模式)
- * [3. 抽象工厂模式](#3--抽象工厂模式)
+ * [3. 抽象工厂模式](#3-抽象工厂模式)
* [单件模式](#单件模式)
* [命令模式](#命令模式)
* [适配器模式](#适配器模式)
@@ -328,7 +328,7 @@ StatisticsDisplay.update:1.0 1.0 1.0
-**4. 问题解决方案类图**
+**4. 问题的解决方案类图**
@@ -427,7 +427,7 @@ Pizza 类有很多子类,要求根据不同的情况用不同的子类实例
-**3. 解决方案类图**
+**3. 问题的解决方案类图**
@@ -438,6 +438,7 @@ public interface Pizza {
public void make();
}
```
+
```java
public class CheesePizza implements Pizza{
@Override
@@ -446,6 +447,7 @@ public class CheesePizza implements Pizza{
}
}
```
+
```java
public class GreekPizza implements Pizza{
@Override
@@ -454,6 +456,7 @@ public class GreekPizza implements Pizza{
}
}
```
+
```java
public class SimplePizzaFactory {
public Pizza createPizza(String type) {
@@ -467,6 +470,7 @@ public class SimplePizzaFactory {
}
}
```
+
```java
public class PizzaStore {
public static void main(String[] args) {
@@ -487,21 +491,23 @@ CheesePizza
**1. 问题描述**
-每个地区的 Pizza 店虽然种类相同,但是都有自己的风味,需要单独区分。例如,一个客户点了纽约的 cheese 种类的 Pizza 和在芝加哥点的相同种类的 Pizza 是不同的。
+每个地区的 PizzaStore 卖的 Pizza 虽然种类相同,但是都有自己的风味。一个客户点了纽约的 cheese 种类的 Pizza 和在芝加哥点的相同种类的 Pizza 是不同的。要求设计出满足条件的 PizzaStore。
**2. 模式定义**
-定义了一个创建对象的接口,但由子类决定要实例化哪个类。工厂方法让类把实例化推迟到子类。
+定义了一个创建对象的接口,但由子类决定要实例化哪个类。工厂方法把实例化推迟到子类。
**3. 模式类图**
-在简单工厂中,创建对象的是另一个类,而在工厂方法中,是由子类来创建对象。下图中,Creator 有一个 anOperation() 方法,这个方法需要用到一组产品类,这组产品类由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。
+在简单工厂中,创建对象的是另一个类,而在工厂方法中,是由子类来创建对象。
+
+下图中,Creator 有一个 anOperation() 方法,这个方法需要用到一组产品类,这组产品类由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。
-**4. 解决方案类图**
+**4. 问题的解决方案类图**
-PizzaStore 由 orderPizza() 方法,顾客可以用它来下单。下单之后需要先使用 createPizza() 来制作 Pizza,这里的 createPizza() 就是 factoryMethod(),不同的 PizzaStore 子类实现了不同的 createPizza()。
+PizzaStore 有 orderPizza() 方法,顾客可以用它来下单。下单之后需要先使用 createPizza() 来制作 Pizza,这里的 createPizza() 就是 factoryMethod(),不同的 PizzaStore 子类实现了不同的 createPizza()。
@@ -607,11 +613,11 @@ NYStyleCheesePizza is making..
ChicagoStyleCheesePizza is making..
```
-## 3. 抽象工厂模式
+## 3. 抽象工厂模式
**1. 模式定义**
-提供一个接口,用于创建 **相关对象家族** ,而不需要明确指定具体类。
+提供一个接口,用于创建 **相关的对象家族** ,而不需要明确指定具体类。
**2. 模式类图**
@@ -619,7 +625,7 @@ ChicagoStyleCheesePizza is making..
抽象工厂模式用到了工厂模式来创建单一对象,在类图左部,AbstractFactory 中的 CreateProductA 和 CreateProductB 方法都是让子类来实现,这两个方法单独来看就是在创建一个对象,这符合工厂模式的定义。
-至于创建对象的家族这一概念是在 Client 体现,Client 要通过 AbstractFactory 同时调用两个方法来创建出两个对象,在这里这两个对象就有很大的相关性,Client 需要这两个对象的协作才能完成任务。
+至于创建对象的家族这一概念是在 Client 体现,Client 要通过 AbstractFactory 同时调用两个方法来创建出两个对象,在这里这两个对象就有很大的相关性,Client 需要同时创建出这两个对象。
从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory ,而工厂模式使用了继承。