diff --git a/notes/设计模式 - 命令.md b/notes/设计模式 - 命令.md index 67226b13..5bb70518 100644 --- a/notes/设计模式 - 命令.md +++ b/notes/设计模式 - 命令.md @@ -1,18 +1,18 @@ ## 2. 命令(Command) ### 意图 -将命令封装成对象中,具有以下作用: +将命令封装成对象,具有以下作用: -- 使用命令来参数化其它对象 -- 将命令放入队列中进行排队 -- 将命令的操作记录到日志中 -- 支持可撤销的操作 +- 使用命令来参数化其它对象; +- 将命令放入队列中进行排队; +- 将命令的操作记录到日志中; +- 支持可撤销的操作。 ### 类图 -- Command:命令 -- Receiver:命令接收者,也就是命令真正的执行者 -- Invoker:通过它来调用命令 -- Client:可以设置命令与命令的接收者 +- Command:命令; +- Receiver:命令接收者,也就是命令真正的执行者; +- Invoker:通过它来调用命令; +- Client:可以设置命令与命令的接收者。

@@ -117,6 +117,13 @@ public class Client { } ``` +```text +Light is on! +Light is off! +``` + +请求变成对象以后,就可以像数据一样保存和传递:把执行过的命令压入栈,给 Command 加一个 undo() 方法恢复执行前的状态,就能实现撤销;把命令放进队列,交给线程池执行,就是 Runnable 的用法。 + ### JDK 中的应用 - [java.lang.Runnable](http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html) - [Netflix Hystrix](https://github.com/Netflix/Hystrix/wiki)(开源库,不属于 JDK) @@ -125,4 +132,4 @@ public class Client { ## 参考资料 - 弗里曼. Head First 设计模式 [M]. 中国电力出版社, 2007. -- Gamma E. 设计模式: 可复用面向对象软件的基础 [M]. 机械工业出版社, 2007. +- Gamma E. 设计模式:可复用面向对象软件的基础 [M]. 机械工业出版社, 2007.