命令

命令模式將引數封裝到方法,當前物件狀態以及要呼叫的方法。劃分稍後呼叫方法所需的所有內容非常有用。它可用於發出命令並稍後決定使用哪一段程式碼來執行命令。

這種模式有三個組成部分:

  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}` );
    }
}

客戶端生成命令,將其傳遞給呼叫者,該呼叫者立即執行它或延遲命令,然後該命令作用於接收者。與伴隨模式一起使用以建立訊息傳遞模式時,命令模式非常有用。