博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
命令设计模式
阅读量:7188 次
发布时间:2019-06-29

本文共 748 字,大约阅读时间需要 2 分钟。

hot3.png

1、命令模式属于对象的行为模式

  • 命令模式又称为行动(Action)模式或交易(Transaction)模式
  • 命令模式把一个请求或者操作封装到一个对象中
  • 命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能

2、命令模式的结构

  • 命令模式是对命令的封装
  • 命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象

50d4f3b3d8ccb8d52ad1ac514bb0346db04.jpg

命令允许请求的一方和接收请求的一方能够独立演化,从而具有以下的优点:

  (1)命令模式使新的命令很容易地被加入到系统里。

  (2)允许接收请求的一方决定是否要否决请求。

  (3)能较容易地设计一个命令队列。

  (4)可以容易地实现对请求的撤销和恢复。

  (5)在需要的情况下,可以较容易地将命令记入日志

源代码

  • 接收者角色类

bc9bb91cab5f3d38fbfb6b888badd51e302.jpg

  • 抽象命令角色类

752aba9aabb89e3b4ddc3168046627d0b89.jpg

  • 具体命令角色类

fb70f6949c0c19edf6ed1c77ddabc710d20.jpg

  • 请求者角色类

f95c18debc7fdd803fb4ec628b7c36655ea.jpg

  • 客户端角色类

46e29cfda7ef38d8df521bb97c1d375fdab.jpg

2、命令模式的优点

(1)更松散的耦合

  • 命令模式使得发起命令的对象——客户端,和具体实现命令的对象——接收者对象完全解耦
  • 也就是说发起命令的对象完全不知道具体实现对象是谁,也不知道如何实现

(2)更动态的控制

  • 命令模式把请求封装起来,可以动态地对它进行参数化、队列化和日志化等操作,从而使得系统更灵活

(3)很自然的复合命令

  • 命令模式中的命令对象能够很容易地组合成复合命令,也就是宏命令,从而使系统操作更简单,功能更强大

(4)更好的扩展性

  • 由于发起命令的对象和具体的实现完全解耦,因此扩展新的命令就很容易
  • 只需要实现新的命令对象,然后在装配的时候,把具体的实现对象设置到命令对象中,然后就可以使用这个命令对象
  • 已有的实现完全不用变化

转载于:https://my.oschina.net/u/3847203/blog/1838937

你可能感兴趣的文章
Excel与SQL Server数据交互
查看>>
JAVA处理Blob大对象
查看>>
QT学习记录之控件布局
查看>>
设计模式之合成模式(Java语言描述)
查看>>
div+css基础——1.页面全局属性设置
查看>>
jquery和prototype冲突兼容
查看>>
VisualSVN 4.0.11补丁原创发布
查看>>
实习小白::(转) 骨骼动画 vs. 精灵表(sprite sheets)
查看>>
docker chown: changing ownership of '/var/lib/XXX': Permission denied
查看>>
Python文摘:argmin/argmax 与 idxmin/idxmax
查看>>
Python标准库 -- UUID模块(生成唯一标识)
查看>>
SpringBoot第一节:结识第一个springboot项目,页面输出;
查看>>
C++ 命名规范---给自己用
查看>>
RequireJs入门
查看>>
linux vim用法总结
查看>>
07 字符编码 字符与字节 文件操作
查看>>
[若有所悟]七步,改变你的纯文本报告面目
查看>>
.net正则表达式大全(.net 的 System.Text.RegularExpressions.Regex.Match()方法使用)
查看>>
HDU1285:确定比赛名次(拓扑排序)
查看>>
linux扩展权限
查看>>