Command模式

命令模式

动机(Motivation

在软件的构建过程中,“行为请求者”和“行为为实现者”通常呈现一种“紧耦合”。但在某些场合——比如需要对行为进行记录、撤销/重做、事务等处理,这种无法抵御变化的紧耦合不合适的。

在这种情况下,如何将“行为请求者”和“行为实现者”解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。

意图(Intent

将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

结构(Structure

几个要点

Command模式的根本目的在于将“行为请求者”和“行为实现者”解耦,在面向对象的设计中,常用的实现手段是将“行为抽象为对象”。

实现Command接口的具体命令对象ConcreteCommand有时候根据需要可能会保存一些额外的状态信息。

通过使用Composite模式,可将多个“命令”封装为一个“复合命令”MacroCommand

Command模式和C#中的Delegate有些类似,但两者定义行为接口的规范有所区别:Command模式以面向对象的“接口”来定义行为接口规范,更严格,更符合抽象原则;而Delegate以函数签名方法定义行为接口规范,更灵活,但抽象能力比较弱。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值