auto commit

This commit is contained in:
CyC2018 2018-03-16 22:30:16 +08:00
parent 1ed4ef6e7d
commit 3dd3a14385

View File

@ -6,7 +6,7 @@
* [工厂模式](#工厂模式)
* [1. 简单工厂](#1-简单工厂)
* [2. 工厂方法模式](#2--工厂方法模式)
* [3. 抽象工厂模式](#3--抽象工厂模式)
* [3. 抽象工厂模式](#3-抽象工厂模式)
* [单件模式](#单件模式)
* [命令模式](#命令模式)
* [适配器模式](#适配器模式)
@ -328,7 +328,7 @@ StatisticsDisplay.update:1.0 1.0 1.0
<div align="center"> <img src="../pics//3dc454fb-efd4-4eb8-afde-785b2182caeb.jpg"/> </div><br>
**4. 问题解决方案类图**
**4. 问题解决方案类图**
<div align="center"> <img src="../pics//dac28811-79b6-4b75-bfa7-6b228e8ac3fb.png"/> </div><br>
@ -427,7 +427,7 @@ Pizza 类有很多子类,要求根据不同的情况用不同的子类实例
<div align="center"> <img src="../pics//ec2f0a65-82ad-4ab9-940f-70ee9f6992cc.png"/> </div><br>
**3. 解决方案类图**
**3. 问题的解决方案类图**
<div align="center"> <img src="../pics//dc3e704c-7c57-42b8-93ea-ddd068665964.jpg"/> </div><br>
@ -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() 方法创建。该方法是抽象的,需要由子类去实现。
<div align="center"> <img src="../pics//903093ec-acc8-4f9b-bf2c-b990b9a5390c.jpg"/> </div><br>
**4. 解决方案类图**
**4. 问题的解决方案类图**
PizzaStore orderPizza() 方法,顾客可以用它来下单。下单之后需要先使用 createPizza() 来制作 Pizza这里的 createPizza() 就是 factoryMethod(),不同的 PizzaStore 子类实现了不同的 createPizza()。
PizzaStore orderPizza() 方法,顾客可以用它来下单。下单之后需要先使用 createPizza() 来制作 Pizza这里的 createPizza() 就是 factoryMethod(),不同的 PizzaStore 子类实现了不同的 createPizza()。
<div align="center"> <img src="../pics//cfb05050-47aa-4fd1-86eb-a7c86320f81b.png"/> </div><br>
@ -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 ,而工厂模式使用了继承。