标签:命令模式
所谓命令模式,就是解耦了命令发送者与命令接收者,何谓命令发送者,何谓命令接收者,举个例子,我点击一个按钮,一个div变红,命令发送者就是按钮,接收者就是div。当然这是简单的例子,为什么要解耦,好处就是解耦了各个对象的联系。
比如现在有个对象,对象看起来是这样写的:
var people={
name:"liyong",
sayName:function(){
alert(this.name);
}
}button.addEventListener("click",people.sayName.bind(people),false);这样写明显把button和people两个对象耦合在一起了,那如果我现在点击一个按钮,要弹出两个人的名字呢,那我们必须得这样做了:
var People=function(name){
this.name=name;
}
People.prototype.sayName=function(){
alert(this.name);
}
var createCommand=function(){
var args=Array.prototype.slice.call(arguments,0);
return {
sayName:function(){
for(var i=0,people;people=args[i++];){
people.sayName();
}
}
}
}
var people1=new People("liyong1");
people2=new People("liyong2");
command=createCommand(people1,people2),
button=document.getElementById("div1")
button.addEventListener("click",command.sayName,false);比如要创建一个文件夹,我们用:mkdir
要打开一个文本文件,我们用:vi
那我们可以用一个bat文件把这些执行命令存起来,想执行的时候直接执行就行了,不用管这些命令具体是由谁执行的,我们只需要发送命令就行了。
其实在js中,所谓命令模式,只是把这些执行过程封装在一个函数中,调用的时候可以用people.sayName()的方式,这样就能让sayName方法找到自己的this。
好了,今天就讲到这里吧!
标签:命令模式
原文地址:http://blog.csdn.net/u010716758/article/details/46293241