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

本文详细解析命令模式的定义与实现原理,包括如何将请求封装成对象,实现参数化操作、请求排队、日志记录及撤销功能。通过结合组合模式,探讨命令模式在GUI设计、回调函数替代及与其他设计模式的比较应用。

命令模式

A.定义:

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

B.定义分析:

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

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

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

C.问题:

(1) 什么时候使用?

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

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

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

转载于:https://www.cnblogs.com/linucos/archive/2011/11/01/2231000.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值