设计模式(23) - 命令模式
来源:互联网 发布:易语言编程系统 编辑:程序博客网 时间:2024/06/14 19:13
问题描述
一个消息的发送者对象向消息的接收者发送消息,发送者如果保持接收者的信息,即可完成消息的投递。但是这种方式把消息的发送者和接收者直接绑定在一起,让消息的发送者依赖于消息的接收者。命令模式解除了消息发送者对于消息接收者的依赖。
命令模式
如图所示,命令模式引入了一个间接层即Command对象来隔离消息发送者Invoker对象和消息的接收者对象Receiver。客户把一个消息接收者对象Receiver注册到一个Command对象中,以便Command对象Execute()方法转发一个消息给该接收者。客户利用一个Command对象来参数化消息发送者Invoker对象,当Invoker对象检测到消息需要发送的时候,投递该消息到Command对象。在Invoker对象看来,Command对象封装了消息的接收者信息(包括接收者的类型,消息接收方法等);Invoker对象只需要与一个稳定的Command接口交互,而不需要关注消息接收者的信息。除了消息投递,Command对象Execute()方法可以完成其他操作,例如:
- 决定是否转发该消息到 Receiver对象
- 依据ConcreteCommand和Receiver的约定,Execute()方法也可以调用Receiver的多个方法来完成一个消息的接收工作
- 利用Memento备忘录模式,ConcreteCommand对象甚至可以支持一个命令的撤销:即依据备忘信息来恢复Receiver对象在执行命令前的状态。
讨论
命令模式在消息的发送者和接收者之间引入了一个间接层次,即Command对象;解除了消息的发送者和接收者的直接依赖关系;消除了消息发送者和消息接收逻辑之间的依赖关系。
0 0
- 设计模式(23) - 命令模式
- 设计模式(命令模式)
- 设计模式---命令模式
- 设计模式-命令模式
- 设计模式:命令模式
- 设计模式:命令模式
- 设计模式:命令模式
- 设计模式 命令模式
- 设计模式--命令模式
- 设计模式---命令模式
- 设计模式- 命令模式
- 设计模式---命令模式
- 设计模式 - 命令模式
- 【设计模式】【命令模式】
- 设计模式---命令模式
- 设计模式 - 命令模式
- 设计模式:命令模式
- 设计模式 - 命令模式
- MarqueeTextview(跑马灯)
- UIScrollView的属性总结
- hdu 1495 非常可乐(广搜)
- 7月份复习总结&8月份复习计划
- 随笔
- 设计模式(23) - 命令模式
- 五布局之表格布局TableLayout
- 设计模式(20) - 迭代器模式
- php传值赋值与引用赋值
- 设计模式(24) - 中介者模式
- Java开发中的23种设计模式详解(转)
- Java并发编程从入门到精通 张振华.Jack --我的书
- Java 解决FileInputStream读取中文时乱码的问题
- C++ primer plus 第五章习题解答