命令
命令模式将参数封装到方法,当前对象状态以及要调用的方法。划分稍后调用方法所需的所有内容非常有用。它可用于发出命令并稍后决定使用哪一段代码来执行命令。
这种模式有三个组成部分:
- 命令消息 - 命令本身,包括方法名称,参数和状态
- 调用者 - 指示命令执行其指令的部分。它可以是定时事件,用户交互,进程中的步骤,回调或执行命令所需的任何方式。
- 接收器 - 命令执行的目标。
命令消息作为数组
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}` );
}
}
客户端生成命令,将其传递给调用者,该调用者立即执行它或延迟命令,然后该命令作用于接收者。与伴随模式一起使用以创建消息传递模式时,命令模式非常有用。