diff --git a/notes/设计模式.md b/notes/设计模式.md index 5c918888..72c1cd81 100644 --- a/notes/设计模式.md +++ b/notes/设计模式.md @@ -1387,11 +1387,11 @@ public class Client { ### 类图 -主题(Subject)具有注册和移除观察者、并通知所有注册者的功能,主题是通过维护一张观察者列表来实现这些操作的。 +主题(Subject)具有注册和移除观察者、并通知所有观察者的功能,主题是通过维护一张观察者列表来实现这些操作的。 观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。 -

+

### 实现 @@ -1410,9 +1410,6 @@ public interface Subject { ``` ```java -import java.util.ArrayList; -import java.util.List; - public class WeatherData implements Subject { private List observers; private float temperature; @@ -1521,7 +1518,7 @@ StatisticsDisplay.update: 1.0 1.0 1.0 ### 类图 -

+

### 实现 @@ -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 所使用的算法。 -

+

### 与状态模式的比较 -状态模式的类图和策略模式一样,并且都是能够动态改变对象的行为。 +状态模式的类图和策略模式类似,并且都是能够动态改变对象的行为。 但是状态模式是通过状态转移来改变 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 diff --git a/pics/0df5d84c-e7ca-4e3a-a688-bb8e68894467.png b/pics/0df5d84c-e7ca-4e3a-a688-bb8e68894467.png new file mode 100644 index 00000000..78a69978 Binary files /dev/null and b/pics/0df5d84c-e7ca-4e3a-a688-bb8e68894467.png differ diff --git a/pics/1fc969e4-0e7c-441b-b53c-01950d2f2be5.png b/pics/1fc969e4-0e7c-441b-b53c-01950d2f2be5.png new file mode 100644 index 00000000..0f7d6660 Binary files /dev/null and b/pics/1fc969e4-0e7c-441b-b53c-01950d2f2be5.png differ diff --git a/pics/c5085437-54df-4304-b62d-44b961711ba7.png b/pics/c5085437-54df-4304-b62d-44b961711ba7.png new file mode 100644 index 00000000..36c948aa Binary files /dev/null and b/pics/c5085437-54df-4304-b62d-44b961711ba7.png differ