Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wushizhenking
CS-Notes
提交
7194925d
C
CS-Notes
项目概览
wushizhenking
/
CS-Notes
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
CS-Notes
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7194925d
编写于
6月 30, 2018
作者:
C
CyC2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
auto commit
上级
5ab835ab
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
11 addition
and
12 deletion
+11
-12
notes/设计模式.md
notes/设计模式.md
+11
-12
pics/0df5d84c-e7ca-4e3a-a688-bb8e68894467.png
pics/0df5d84c-e7ca-4e3a-a688-bb8e68894467.png
+0
-0
pics/1fc969e4-0e7c-441b-b53c-01950d2f2be5.png
pics/1fc969e4-0e7c-441b-b53c-01950d2f2be5.png
+0
-0
pics/c5085437-54df-4304-b62d-44b961711ba7.png
pics/c5085437-54df-4304-b62d-44b961711ba7.png
+0
-0
未找到文件。
notes/设计模式.md
浏览文件 @
7194925d
...
...
@@ -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
...
...
pics/0df5d84c-e7ca-4e3a-a688-bb8e68894467.png
0 → 100644
浏览文件 @
7194925d
28.0 KB
pics/1fc969e4-0e7c-441b-b53c-01950d2f2be5.png
0 → 100644
浏览文件 @
7194925d
23.0 KB
pics/c5085437-54df-4304-b62d-44b961711ba7.png
0 → 100644
浏览文件 @
7194925d
18.0 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录