命令模式:将“请求/命令”封装成对象,无需了解这个请求的执行者以及处理细节。
谁来执行和处理这个命令对于命令的发号者来说并不关心,发号命令者只管发号施令而不关注执行者以及执行细节,而命令的执行者只管执行命令而不关注命令是由谁来发号的。命令模式能将发号施令者与命令的执行者解耦。他们只需要关注于命令对象。命令模式可能会产生额外的很多的子类,给系统增加复杂性。
命令模式UML图:
命令模式时序图:
根据单一职责的设计原则,通常我们会把一个命令(do something)封装为一个Command对象,有时我们也会一个命令的一组行为(such as:do something/undo something,but the something must be the same thing.)封装为一个Command对象。
宏命令
一个命令他包含有一组其他的命令,当宏命令execute方法被调用时,他会调用一组命令的execute方法,各个不同的command对象有他们自己的Receiver,如图所示:
宏命令类图上和装饰者模式有类似之处,装饰者与被装饰者都有着相同的父类,且装饰者有被装饰者的引用。也就是说一个宏命令不仅能装饰普通的命令对象(可能是简单的委托调用,也可能装饰些新的功能),他自己也能被其他的宏命令对象装饰。
不是所有的Command对象都有自己的Receiver,他们也可以自己执行命令,而且没有Receiver的Command很常见。
参考资料:
Head First 设计模式 (中国电力出版社)
- 大小: 11.4 KB
- 大小: 4.4 KB
- 大小: 13.7 KB
分享到:
相关推荐
设计模式C++学习之命令模式(Command)
有关设计模式里边的命令模式,内含ppt、源代码及结果、word整理。在此以供大家学习交流。
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
C++设计模式代码资源23_Command_命令模式.zip
Command设计模式ppt 代码示例 设计模式 Command ppt 代码实例 撤销重做实例
C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式
Head First 设计模式 (六) 命令模式(Command pattern) C++实现
命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
C++设计模式课件23_Command_命令模式.pdf
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第15节:行为型模式Command命令模式
C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式 (Level 300)
主要介绍了Java设计模式之命令模式(Command模式)介绍,本文讲解了Command模式的定义、如何使用命令模式等内容,需要的朋友可以参考下
NULL 博文链接:https://jacky-dai.iteye.com/blog/1928129
命令模式 Command 设计模式 若理解有问题,还请大S指教。
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
命令模式是一种行为设计模式,它将一个请求封装成一个对象,从而允许用户根据不同的请求对客户进行参数化;同时,它也支持撤销操作。 命令模式的核心在于通过命令对象实现调用操作和实现操作的解耦。这种模式通常...
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 ...
第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式...
这是JAVA设计模式中属于行为模式的部分,包括Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Strategy(策略模式)、State 、Observer(观察者模式)、Visitor...