设计模式学习每日一记(18.命令模式)

命令模式

A.定义:

将一个请求封装成对象,这样可以用不同的请求对客户进行参数化。对请求排队、记录请求日志,或支持可撤销的操作。

B.定义分析:

"将一个请求封装成对象,这样可以用不同的请求对客户进行参数化。对请求排队、记录请求日志,或支持可撤销的操作。" 请求可以理解为调用。把调用封装在一个对象里。为什么要把请求封装在对象里呢?假设有个我们设计GUI,有个Menu和Button,设计GUI toolkit的时候,是没有办法知道Menu动作要处理哪些事情的,我们之后留出这样的机制:固定调用一个对象的action接口,或者调用回调函数(面向过程).如果是面向对象情况下,就固定调用对象的接口。这就是把请求(调用)封装成对象的用意。 

 "将一个请求封装成对象这样可以用不同的请求对客户进行参数化。对请求排队、记录请求日志,或支持可撤销的操作。"通过用不同的调用实例化不同的对象,之后传递给Menu之类动作发起者,实现了对动作响应的参数化。

 "将一个请求封装成对象这样可以用不同的请求对客户进行参数化对请求排队、记录请求日志,或支持可撤销的操作。"结合组合模式,请求可以是组合的(多数是组合的),那么请求的撤销,请求的排队(自然),请求的日志都是可以支持的操作了。

C.问题:

(1) 什么时候使用?

命令模式可以看过回调函数的面向对象替代。 

(2)与观察者模式用什么不同? 

请关注设计模式比较系列文章。 

原文地址:https://www.cnblogs.com/linucos/p/2231000.html