auto commit
This commit is contained in:
parent
5ab835ab9e
commit
7194925d41
|
@ -1387,11 +1387,11 @@ public class Client {
|
||||||
|
|
||||||
### 类图
|
### 类图
|
||||||
|
|
||||||
主题(Subject)具有注册和移除观察者、并通知所有注册者的功能,主题是通过维护一张观察者列表来实现这些操作的。
|
主题(Subject)具有注册和移除观察者、并通知所有观察者的功能,主题是通过维护一张观察者列表来实现这些操作的。
|
||||||
|
|
||||||
观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。
|
观察者(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
|
```java
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class WeatherData implements Subject {
|
public class WeatherData implements Subject {
|
||||||
private List<Observer> observers;
|
private List<Observer> observers;
|
||||||
private float temperature;
|
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() 方法。
|
- Strategy 接口定义了一个算法族,它们都具有 behavior() 方法。
|
||||||
- Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 BehaviorInterface(),setStrategy(in Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。
|
- 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 对象。
|
但是状态模式是通过状态转移来改变 Context 所组合的 State 对象,而策略模式是通过 Context 本身的决策来改变组合的 Strategy 对象。
|
||||||
|
|
||||||
|
@ -2727,7 +2724,9 @@ public class Client {
|
||||||
|
|
||||||
### 设计原则
|
### 设计原则
|
||||||
|
|
||||||
类应该对扩展开放,对修改关闭:也就是添加新功能时不需要修改代码。饮料可以动态添加新的配料,而不需要去修改饮料的代码。不可能把所有的类设计成都满足这一原则,应当把该原则应用于最有可能发生改变的地方。
|
类应该对扩展开放,对修改关闭:也就是添加新功能时不需要修改代码。饮料可以动态添加新的配料,而不需要去修改饮料的代码。
|
||||||
|
|
||||||
|
不可能把所有的类设计成都满足这一原则,应当把该原则应用于最有可能发生改变的地方。
|
||||||
|
|
||||||
### JDK
|
### JDK
|
||||||
|
|
||||||
|
|
BIN
pics/0df5d84c-e7ca-4e3a-a688-bb8e68894467.png
Normal file
BIN
pics/0df5d84c-e7ca-4e3a-a688-bb8e68894467.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
BIN
pics/1fc969e4-0e7c-441b-b53c-01950d2f2be5.png
Normal file
BIN
pics/1fc969e4-0e7c-441b-b53c-01950d2f2be5.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
BIN
pics/c5085437-54df-4304-b62d-44b961711ba7.png
Normal file
BIN
pics/c5085437-54df-4304-b62d-44b961711ba7.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
Loading…
Reference in New Issue
Block a user