命令

命令模式将参数封装到方法,当前对象状态以及要调用的方法。划分稍后调用方法所需的所有内容非常有用。它可用于发出命令并稍后决定使用哪一段代码来执行命令。

这种模式有三个组成部分:

  1. 命令消息 - 命令本身,包括方法名称,参数和状态
  2. 调用者 - 指示命令执行其指令的部分。它可以是定时事件,用户交互,进程中的步骤,回调或执行命令所需的任何方式。
  3. 接收器 - 命令执行的目标。

命令消息作为数组

var aCommand = new Array();
aCommand.push(new Instructions().DoThis);  //Method to execute
aCommand.push("String Argument");  //string argument
aCommand.push(777);                //integer argument
aCommand.push(new Object {} );     //object argument
aCommand.push(new Array() );       //array argument

命令类的构造函数

class DoThis {
    constructor( stringArg, numArg, objectArg, arrayArg ) {
        this._stringArg = stringArg;
        this._numArg = numArg;
        this._objectArg = objectArg;
        this._arrayArg = arrayArg;
    }
    Execute() {
       var receiver = new Instructions();
       receiver.DoThis(this._stringArg, this._numArg, this._objectArg, this._arrayArg );
    }
}     

祈求

aCommand.Execute();  

可以调用:

  • 立即
  • 回应一个事件
  • 在一系列执行中
  • 作为回调响应或承诺
  • 在事件循环结束时
  • 以任何其他需要的方式来调用方法

接收器

class Instructions {
    DoThis( stringArg, numArg, objectArg, arrayArg ) {
        console.log( `${stringArg}, ${numArg}, ${objectArg}, ${arrayArg}` );
    }
}

客户端生成命令,将其传递给调用者,该调用者立即执行它或延迟命令,然后该命令作用于接收者。与伴随模式一起使用以创建消息传递模式时,命令模式非常有用。