设计模式(六)命令模式

当需要将发出请求的对象和执行请求的对象解耦的时候,使用命令模式。

命令模式

定义

命令模式,将”请求”封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象。命令模式也支持可撤销的操作

UML结构

类关系说明

  1. Command接口封装了请求动作,作为请求对象接口
  2. Light作为具体的执行请求的对象类
  3. LightOnCommand实现了Command接口,作为一个具体的命令。并持有了一个Light对象。其实现的命令接口execute()间接调用了Light对象的on()方法。
  4. Invoker作为调用者,执行实际请求操作

总结

  1. 命令模式,解耦了发出请求的对象和执行请求的对象
  2. 实际调用者通过统一的命令接口间接调用了执行者的行为,而不需要其背后的细节。

源码地址

design_pattern_learn