命令模式
2016-02-03 16:51
183 查看
命令模式:
将一个请求封装为一个对象,使得可用不同的请求对客户进行参数化(区分),对请求排队或记录请求日志,及支持可撤销操作。
具体来说:去饭店吃饭,客户Clinet点完餐(发出命令或请求)之后等着就行了,不需要关心真正地服务员(接收信息者)是谁、叫什么名字,也不需要关心饭菜谁去做,怎么做,自然会有相应的服务人员nvoker去通知、记录,相应的厨师Receiver去炒菜、做饭;在这次吃饭的过程中客户可以点不同的菜(同一个请求可以有不同的内容),因此炒的菜不一样,每种菜炒的方式不一样,但是同一种菜,比如点的“鱼香肉丝”,他的做法差不多(命令实现对象是对客户端某个请求的封装),在哪个餐厅点这个菜最后出现的不会变成”日本豆腐“。
不知道说的对不对,为了不误人子弟,推荐一篇博客
http://www.cnblogs.com/sjms/archive/2010/07/09/1774069.html
可以容易地实现对请求的撤销和重做
新加进新的具体命名类不影响其他的类
需要情况下,较容易的将命名记入日志
容许接收请求的一方决定是否要否决该请求
只有真正需要如撤销、恢复操作等功能时,把原来的代码重构为命名模式
将一个请求封装为一个对象,使得可用不同的请求对客户进行参数化(区分),对请求排队或记录请求日志,及支持可撤销操作。
具体来说:去饭店吃饭,客户Clinet点完餐(发出命令或请求)之后等着就行了,不需要关心真正地服务员(接收信息者)是谁、叫什么名字,也不需要关心饭菜谁去做,怎么做,自然会有相应的服务人员nvoker去通知、记录,相应的厨师Receiver去炒菜、做饭;在这次吃饭的过程中客户可以点不同的菜(同一个请求可以有不同的内容),因此炒的菜不一样,每种菜炒的方式不一样,但是同一种菜,比如点的“鱼香肉丝”,他的做法差不多(命令实现对象是对客户端某个请求的封装),在哪个餐厅点这个菜最后出现的不会变成”日本豆腐“。
不知道说的对不对,为了不误人子弟,推荐一篇博客
http://www.cnblogs.com/sjms/archive/2010/07/09/1774069.html
结构图:
作用:
较容易设计一个命令队列可以容易地实现对请求的撤销和重做
新加进新的具体命名类不影响其他的类
需要情况下,较容易的将命名记入日志
容许接收请求的一方决定是否要否决该请求
只有真正需要如撤销、恢复操作等功能时,把原来的代码重构为命名模式
相关文章推荐
- ORA-08002错误:序列 XXXX.CURRVAL 尚未在此会话中定义
- leetcode292题 题解 翻译 C语言版 Python版
- 错误: 找不到或无法加载主类
- Android 监听返回键、HOME键
- 2
- 集合类使用set
- 关于Ubuntu12.04编译环境搭建问题
- LinearLayout measure过程中的几次遍历分析
- C++ 资源大全
- 怎样在configure时指定头文件
- Android adb 使用
- POJ 1836 Alignment(LIS变形)
- 关于正则表达式
- IE样式兼容写法
- JS获取浏览器名和版本信息
- Java中关键字continue、break和return的区别
- Eclipse关闭XML文件验证的方法
- android studio 2.0下 jni开发环境的搭建
- 106. Construct Binary Tree from Inorder and Postorder Traversal
- javascript显示上周、上个月日期的处理方法