行为型模式之命令COMMAND

一、意图

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

二、图解

这里写图片描述
  COMMAND模式的意图很是费解,以上图为例,个人理解为,本来我们可以直接在菜单项MenuItem的点击方法中直接调用我们请求对象,但是如果我们不知道被请求的操作或请求接受者的任何信息(这部分不是你设计的),那么我们就不能显示实现该请求。而COMMAND模式将请求变为对象,如图中command,通过自身的clicked方法调用对象的的方法。而且由于对象是动态赋予的,可以赋值不同对象来参数化。这一模式的关键是一个抽象的COMMAND类,它定义了一个执行操作的接口。其最简单的形式是一个抽象的Execute操作。具体的Cmmond子类将接收者作为其一个实例变量,并实现Execute操作,指定接收者采取的动作。
这里写图片描述
  如上图,我们调用Command子类PasteCommand的Execute方法。在Execute方法中调用真正的请求接受者。而且可以和Composite模式一起使用,组合接受者。
  而且Command的Execute操作可在实施操作前将状态存储起来,执行的命令被存储在一个历史列表中。在取消操作时这个状态用来消除该操作的影响。 Command接口必须添加一个 UnExecute操作,该操作取消上一次 Execute 调用的效果。

三、结构

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值