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)

// 命令模式是设计模式中非常优雅和实用的一种模式,可以用来设计撤销和重做、命令队列、宏命令等功能

  

posted @ 2016-02-19 13:42  倾其一生  阅读(151)  评论(0)    收藏  举报