• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

命令模式(Command)

技术杂谈 勤劳的小蚂蚁 2个月前 (02-14) 71次浏览 已收录 0个评论 扫描二维码

1. 模式的定义

电脑开机的几个过程:1. 加载电源 2. 设备检查 3. 装载系统
客户端只是想要发出命令或者请求,不关心请求的真正接收者是谁,也不关心具体如何实现,而且同一个请求的动作可以有不同的请求内容,当然具体的处理功能也不一样,该怎么实现?
命令模式的定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

2. UML图

 
Command:定义命令的接口,声明执行的方法
ConcreteCommand:命令接口对象,通常会持有接收者,并调用接收者的功能来完成命令要执行的操作
Receiver:接收者,真正执行命令的对象
Invoker:要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象,这个是客户端真正触发命令并要求命令执行相应操作的地方
Client:创建具体的命令对象,并且设置命令对象的接受者。
代码:

3. 研磨设计模式

1) 命令模式的关键:把请求封装成对象,也就是命令对象,并定义统一的执行操作的接口,这个命令对象可以被存储,转发,记录,撤销和处理等
2)参数化配置:可以用不同的命令对象,去参数化配置客户的请求 
比如说重启和开始按钮,虽然按下的是同一个按钮,相当于同一个请求,但是为请求配置不同的按钮对象,就会执行不同的功能
3)可撤销操作的意思:放弃该操作,回到未执行该操作前的状态。 
两种思路:1. 补偿式 2. 存储恢复式
4) 宏命令:包含多个命令的命令,是命令的组合。 
5)队列请求:对命令对象进行排队,组成工作队列,然后依次取出命令对象来执行。
6)日志请求:就是把请求的历史记录保存下来,一般采用永久存储的方式。
7)命令模式的本质:封装请求,把请求对象封装成为命令对象,然后可以对这个对象进行一系列的处理。

丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:命令模式(Command)
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00