行为模式之Command模式

1、意图

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

2、适用性

在以下情况下使用

(1)抽象出待执行的动作以参数化某对象。你可用过程语言中的回调函数表达这种参数化机制。

(2)在不同的时刻指定、排列和执行请求。一个Command对象可以有一个与初始请求无关的生存期。如果一个请求的接收者可用一种与地址空间无关的方式表达,那么就可将负责该请求的命令对象传送给另一个不同的进程并在那儿实现该请求。

(3)支持取消操作。

(4)支持修改日志,这样当系统崩溃时,这些修改可能被重做一遍。在Command接口中添加装载操作和存储操作,可以用来保持变动的一个一致的修改日志。从崩溃中恢复的过程包括从磁盘中重新读入记录下来的命令并用Execute操作重新执行它们

(5)用构建在原语操作上的高层操作构造一个系统。这样一种结构在支持事务的信息系统中很常见。

3、参与者

(1)Command:声明执行操作的接口

(2)ConcreteCommand:将一个接收者对象绑定于一个动作

(3)Client:创建一个具体命令并设定它的接收者

(4)Invoker:要求该命令执行这个请求

(5)Receiver:知道如何实施与执行一个请求相关的操作。

4、协作

(1)Client创建一个ConcreteCommand对象并指定它的Receiver对象

(2)某Invokder对象存储该ConcreteCommand对象

(3)该 Invoker通过调用Command对象的Execute操作来提交一个请求。

(4)ConcreteCommand对象调用它的Receiver的一些操作以执行该请求。

5、效果

(1)Command模式将调用操作的对象与知道如何实现该操作的对象解耦

(2)Command是头等的对象。它们可像其他的对象一样被操纵和扩展

(3)你可将多个命令装配成一个复活命令。

(4)增加新的Command很容易,因为这无需改变已有的类。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值