标签:命令模式
所谓命令模式,就是解耦了命令发送者与命令接收者,何谓命令发送者,何谓命令接收者,举个例子,我点击一个按钮,一个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