您好,欢迎访问一九零五行业门户网

Javascript 模式实例 观察者模式_javascript技巧

在园里有许多牛人都已经写过这些文章,不过大多的例子都是.net,今天我要举一个js的使用实例.有兴趣的朋友可以先了解一下一些牛人的,比如李会军大哥设计模式篇中观察者的那一节
http://www.cnblogs.com/terrylee/archive/2006/10/23/observer_pattern.html
说说我自己对这模式的理解,其思想核心是:每个被观察对象都依据对象数据的改变而改变,被观察对象一定要有同样的改变行为来约束,这个约束是被观察对象提供给观察器的统一接口。观察器会开发改变数据的行为。
js是弱类型的脚本,很多东西都要约定的,不象.net会有接口的约束,废话不多说,我们直接看实例:
观察者实例
复制代码 代码如下:
var observerobj = { /**//*依赖对象*/
firstname: max,
lastname: gan,
id: 1
}
var observermanager = { /**//*观察器*/
observers:[], /**//*观察对象集*/
addobserver: function(item){/**//*加入观察对象*/
this.observers.push(item);
},
change: function(obj){ /**//*改变对象行为*/
for(var item in obj){
observerobj[item] = obj[item];
}//改变数据依赖对象数据
for(var i = 0,len = this.observers.length; i var item = this.observers[i];
item.display(); //对象改变后,改变观察对象的行为display; 为统一的接口
}
}
}
var header = function(){ /**//*观察对象header*/
this.display = function(){
alert(observerobj.firstname);
}
}
var content = function(){ /**//*观察对象content*/
this.display = function(){
alert(observerobj.lastname);
}
}
var foot = function(){ /**//*观察对象foot*/
this.display = function(){
alert(observerobj.id);
}
}
上面的例子observermanager只提供了绑定的方法(addobserver),其他的什么取消绑定啊之类的代码技巧,可能大家想一下就知道了.其实这些代码的最终目的就是当改变了observers数据,其他的被对象也会根据数据的改变作出相应的回应.ok,现在我们把他们绑定一下.
复制代码 代码如下:
/***绑定观察器动作***/
observermanager.addobserver(new header());
observermanager.addobserver(new content());
observermanager.addobserver(new foot());
最后我们使用会怎么使用呢?(一个低能的问题...呵呵)看例子.
使用方法
复制代码 代码如下:
改变firstname
改变lastname
改变id
我把整个例子都附上了,有兴趣的朋友可以下载来看看.
javascript观察者模式.rar
一个人能够走多远,取决于与谁同行
其它类似信息

推荐信息