命令模式

一、背景

       当须要向某些对象发送请求,可是不知道请求的接受者是谁,也不知道被请求的操做是哪一个,是得请求发送者与请求接受者解耦。设计

二、模式定义

       命令模式(Command Pattern):将一个请求封装为一个对象,从而使咱们可用不一样的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操做。日志

三、模式结构

       命令模式包括以下角色:对象

  • Command:抽象命令类
  • ConcreteCommand:具体命令类
  • Invoker:调用者
  • Receiver:接收者
  • Client:客户类

四、优势

  • 下降系统的耦合度。
  • 新的命令能够很容易的加入到系统中。
  • 能够比较容易的设计一个命令队列和宏命令(组合命令)。
  • 能够方便的实现对请求的Undo和Redo。

五、缺点

       使用命令模式可能会致使某些系统有过多的具体命令雷。因为针对每个命令都须要设计一个具体命令类,所以某些系统可能须要大量具体命令类,这将影响命令模式的使用。排序

六、为何使用命令模式

(1)咱们须要Client和Receiver同时开发,并且在开发过程当中须要分别不停地重构,更名。队列

(2)要求有Redo和Undo等功能。开发

(3)要求命令不按照调用顺序执行,而是按照执行时的状况排序执行。重构

(4)在上述状况下,接收者有多个。请求