宏命令是一组命令的集合,通过执行宏命令的方式,可以一次执行一批命令。
下面我们看看如何逐步创建一个宏命令。首先,我们依然要创建好各种 Command:
第一步 :定义好各种命令
var closeDoorCommand = {
execute: function(){
console.log( '关门' );
}
};
var openQQCommand = {
execute: function(){
console.log('打开QQ')
}
}
var openPcCommand = {
execute: function(){
console.log( '开电脑' );
}
};
第二步 :定义宏命令 MacroCommand
macroCommand.add 方法表示把子命令添 加进宏命令对象,当调用宏命令对象的 execute 方法时,会迭代这一组子命令对象,并且依次执 行它们的 execute 方法:
var MacroCommand = function(){
return {
commandList : [] ,
add : function( command ){
this.commandList.push( command );//把命令添加至数组中
},
//撤销命令
undo:function(command){
this.commandsList.pop( command );
},
execute : function(){
for(var i = 0 ,command;command = this.commandList[i++]){
command.execute(); //一次执行execute
}
}
}
}
var macroCommand = MacroCommand(); //定义
第三步 :添加命令
macroCommand.add( closeDoorCommand );
macroCommand.add( openQQCommand );
macroCommand.add( openPcCommand );
第四步 : 执行命令
macroCommand.execute();
宏命令是命令模式与组合模式的联用产物