javascript设计模式11命令模式
命令模式定义:解耦请求接收者和请求发送者,将请求封装为命令对象。
//传统面向对象设计的命令模式
var door = {
open:function(){
console.log('open')
},
close:function(){
console.log('close')
}
}
var closeDoorCommand = function(receiver){
this.receiver = receiver
}
closeDoorCommand.prototype.execute = function(){
this.receiver.close()
}
var closeCommand = new closeDoorCommand(door)
var setCommand = function(btn,command){
btn.onclick=function(){
command.execute();
}
}
setCommand(btn,closeCommand)
// javascript中命令模式实现
var closeDoorCommand = function(receiver){
var _oldstate;
var _curstate;
return {
execute:function(){
receiver.close();
_oldstate = _curstate
_curstate = "closed"
},
undo:function(){
_curstate = _oldstate;
}
}
}
var setCommand = function(btn, command){
btn.onclick = function(){
command.execute();
}
}
var command = closeDoorCommand(door)
setCommand(btn,command)
// 命令模式是设计模式中非常优雅和实用的一种模式,可以用来设计撤销和重做、命令队列、宏命令等功能
Think Different, Make Different-编程是一个习惯

浙公网安备 33010602011771号