提交 7194925d 编写于 作者: C CyC2018

auto commit

上级 5ab835ab
......@@ -1387,11 +1387,11 @@ public class Client {
### 类图
主题(Subject)具有注册和移除观察者、并通知所有注册者的功能,主题是通过维护一张观察者列表来实现这些操作的。
主题(Subject)具有注册和移除观察者、并通知所有观察者的功能,主题是通过维护一张观察者列表来实现这些操作的。
观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。
<div align="center"> <img src="../pics//48a934ff-a29b-434c-8e1d-8c8ec20cb91d.png"/> </div><br>
<div align="center"> <img src="../pics//0df5d84c-e7ca-4e3a-a688-bb8e68894467.png"/> </div><br>
### 实现
......@@ -1410,9 +1410,6 @@ public interface Subject {
```
```java
import java.util.ArrayList;
import java.util.List;
public class WeatherData implements Subject {
private List<Observer> observers;
private float temperature;
......@@ -1521,7 +1518,7 @@ StatisticsDisplay.update: 1.0 1.0 1.0
### 类图
<div align="center"> <img src="../pics//abb3e0d1-c1bd-45d0-8190-73c74a9f6679.png"/> </div><br>
<div align="center"> <img src="../pics//c5085437-54df-4304-b62d-44b961711ba7.png"/> </div><br>
### 实现
......@@ -1825,14 +1822,14 @@ No gumball dispensed
### 类图
- Strategy 接口定义了一个算法族,它们都具有 BehaviorInterface() 方法。
- Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 BehaviorInterface(),setStrategy(in Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。
- Strategy 接口定义了一个算法族,它们都具有 behavior() 方法。
- Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(in Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。
<div align="center"> <img src="../pics//b8dd708d-f372-4b04-b828-1dd99021c244.png"/> </div><br>
<div align="center"> <img src="../pics//1fc969e4-0e7c-441b-b53c-01950d2f2be5.png"/> </div><br>
### 与状态模式的比较
状态模式的类图和策略模式一样,并且都是能够动态改变对象的行为。
状态模式的类图和策略模式类似,并且都是能够动态改变对象的行为。
但是状态模式是通过状态转移来改变 Context 所组合的 State 对象,而策略模式是通过 Context 本身的决策来改变组合的 Strategy 对象。
......@@ -2659,7 +2656,7 @@ public interface Beverage {
```
```java
public class DarkRoast implements Beverage{
public class DarkRoast implements Beverage {
@Override
public double cost() {
return 1;
......@@ -2727,7 +2724,9 @@ public class Client {
### 设计原则
类应该对扩展开放,对修改关闭:也就是添加新功能时不需要修改代码。饮料可以动态添加新的配料,而不需要去修改饮料的代码。不可能把所有的类设计成都满足这一原则,应当把该原则应用于最有可能发生改变的地方。
类应该对扩展开放,对修改关闭:也就是添加新功能时不需要修改代码。饮料可以动态添加新的配料,而不需要去修改饮料的代码。
不可能把所有的类设计成都满足这一原则,应当把该原则应用于最有可能发生改变的地方。
### JDK
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册