作用
命令模式可将“动作的请求者”从“动作的执行者”对象中解耦;
命令模式将“请求”封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象,命令对象也支持撤销操作;
命令也可以将运算块打包(一个接收者和一组动作),形成一个命令组合,存储,传递或调用它们;比如:打开一个总开关实现打开电源,音响,电视操作;
** 实现方式 **
- 调用者 只关心 Command接口;
- 调用者与接收者不存在直接关系,而是通过 Command接口进行通信;
- 具体命令与其对应的接收者绑定在一起,命令对象 包含接收者,让命令对象控制接收者;
类图
Paste_Image.png- Command接口:为所有命令的接口,调用命令对象execute(),就可以让接收者进相关的动作;
- ConcreteCommnad:为具体命令类,实现Command接口,并持有一个 Receiver接收者的实例;定义了动作与接收者之间的绑定关系。调用者只需要调用execute(),发出请求,然后由她来调用接收者的处理动作;实现解耦;
- Receiver:为命令接收者类,接收者知道如何处理命令请求,任务类,都可以当接收者;
- Invoker: 为 调用者类,持有命令接口对象,用来调用命令对象的 execute(),用来发出命令请求;
- Client: 为客户端,客户端负责创建 ConcreteCommand,并设置接收者;
网友评论