命令
命令模式將引數封裝到方法,當前物件狀態以及要呼叫的方法。劃分稍後呼叫方法所需的所有內容非常有用。它可用於發出命令並稍後決定使用哪一段程式碼來執行命令。
這種模式有三個組成部分:
- 命令訊息 - 命令本身,包括方法名稱,引數和狀態
- 呼叫者 - 指示命令執行其指令的部分。它可以是定時事件,使用者互動,程序中的步驟,回撥或執行命令所需的任何方式。
- 接收器 - 命令執行的目標。
命令訊息作為陣列
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}` );
}
}
客戶端生成命令,將其傳遞給呼叫者,該呼叫者立即執行它或延遲命令,然後該命令作用於接收者。與伴隨模式一起使用以建立訊息傳遞模式時,命令模式非常有用。