命令模式
A.定义:
将一个请求封装成对象,这样可以用不同的请求对客户进行参数化。对请求排队、记录请求日志,或支持可撤销的操作。
B.定义分析:
"将一个请求封装成对象,这样可以用不同的请求对客户进行参数化。对请求排队、记录请求日志,或支持可撤销的操作。" 请求可以理解为调用。把调用封装在一个对象里。为什么要把请求封装在对象里呢?假设有个我们设计GUI,有个Menu和Button,设计GUI toolkit的时候,是没有办法知道Menu动作要处理哪些事情的,我们之后留出这样的机制:固定调用一个对象的action接口,或者调用回调函数(面向过程).如果是面向对象情况下,就固定调用对象的接口。这就是把请求(调用)封装成对象的用意。
"将一个请求封装成对象,这样可以用不同的请求对客户进行参数化。对请求排队、记录请求日志,或支持可撤销的操作。"通过用不同的调用实例化不同的对象,之后传递给Menu之类动作发起者,实现了对动作响应的参数化。
"将一个请求封装成对象,这样可以用不同的请求对客户进行参数化。对请求排队、记录请求日志,或支持可撤销的操作。"结合组合模式,请求可以是组合的(多数是组合的),那么请求的撤销,请求的排队(自然),请求的日志都是可以支持的操作了。
C.问题:
(1) 什么时候使用?
命令模式可以看过回调函数的面向对象替代。
(2)与观察者模式用什么不同?
请关注设计模式比较系列文章。