【设计模式】行为模式之Command命令
2016-08-21 21:59
330 查看
Command命令是一种对象行为型设计模式,目的是将一个请求封装为一个对象,从而使得可用不同的请求对客户进行参数化,而且对请求排队或记录请求日志,以及支持可撤销的操作。
在面向过程语言中的回调机制,如C语言,先在某处注册回调函数,而后在某个需要的时候进行调用,Command模式便是这种回调机制的一个面向对象的替代品,抽象出待执行的动作以参数化某对象。Command模式还可以在不同的时刻指定、排列和执行请求,支持取消操作,支持修改日志,用构建在原语操作上的高层操作构造一个系统。
Command模式的结构如下图所示:
上图中,Command声明执行动作的接口。ConcreteCommand将一个接收者对象绑定于一个动作,调用接收者相应的操作,以实现execute。Client创建一个具体命令对象并设定它的接收者。Invoker要求该命令执行这个请求。Receiver知道如何实施与执行一个请求相关的操作,任何类都可能作为一个接收者。
Client创建一个ConcreteCommand对象并指定它的Receiver对象,某Invoker对象存储该ConcreteCommand对象,该Invoker通过调用Command对象的execute操作来提交一个请求,若该命令是可撤销的,ConcreteCommand就在执行execute操作之前存储当前状态以用于取消该命令,ConcreteCommand对象调用它的Receiver的一些操作以执行该请求。可以看出,Command模式最明显的特点是,将调用操作的对象与知道如何实现该操作的对象解耦。
在面向过程语言中的回调机制,如C语言,先在某处注册回调函数,而后在某个需要的时候进行调用,Command模式便是这种回调机制的一个面向对象的替代品,抽象出待执行的动作以参数化某对象。Command模式还可以在不同的时刻指定、排列和执行请求,支持取消操作,支持修改日志,用构建在原语操作上的高层操作构造一个系统。
Command模式的结构如下图所示:
上图中,Command声明执行动作的接口。ConcreteCommand将一个接收者对象绑定于一个动作,调用接收者相应的操作,以实现execute。Client创建一个具体命令对象并设定它的接收者。Invoker要求该命令执行这个请求。Receiver知道如何实施与执行一个请求相关的操作,任何类都可能作为一个接收者。
Client创建一个ConcreteCommand对象并指定它的Receiver对象,某Invoker对象存储该ConcreteCommand对象,该Invoker通过调用Command对象的execute操作来提交一个请求,若该命令是可撤销的,ConcreteCommand就在执行execute操作之前存储当前状态以用于取消该命令,ConcreteCommand对象调用它的Receiver的一些操作以执行该请求。可以看出,Command模式最明显的特点是,将调用操作的对象与知道如何实现该操作的对象解耦。
相关文章推荐
- Java设计模式(20)——行为模式之命令模式(Command)
- 【设计模式学习笔记十五】【行为模式】【命令模式(Command)】
- 【设计模式基础】行为模式 - 4 - 命令(Command)
- 行为设计模式---命令模式(Command)
- 设计模式-行为设计模式:命令模式 Command
- 设计技巧16:命令模式 Command 将请求封装成对象,传递行为
- java设计模式之Command(菜单命令)
- .NET设计模式-命令模式(Command Pattern)
- Java实用设计模式:Command(命令模式)
- 设计模式学习日志(15)-Command命令(行为型模式) (引用)
- 设计模式 - Command Pattern(命令模式)
- 设计模式-Command(命令模式)
- 设计模式学习笔记(十七)——Command命令模式
- 设计模式之Command(命令)
- 乐在其中设计模式(C#) - 命令模式(Command Pattern)
- 设计模式 - Command Pattern(命令模式)
- 设计模式学习笔记(十七)——Command命令模式
- 设计模式----Command(命令)模式
- 乐在其中设计模式(C#) - 命令模式(Command Pattern)
- 设计模式 - Command Pattern(命令模式)