当前位置: 首页 > 图文教程 > 网络编程 > Javascript > Javascript 模式实例 观察者模式

Javascript
javascript实现的动态添加表单元素input,button等(appendChild)
javascript动态添加单元格的脚本代码
[原创]仿google adsense颜色选择器代码,从中易广告联盟程序提取
asp javascript 实现关闭窗口时保存数据的办法
javascript 下拉框显示当前日期
惊云JS随机排序程序随机显示信息-每次新闻显示顺序都不一样
javascript下有关dom以及xml节点访问兼容问题
js 复制功能 支持 for IE/FireFox/mozilla/ns
css图片自适应大小
比较简单的一个符合web标准的JS调用flash方法
javascript数组组合成字符串的脚本
XRegExp 0.2: Now With Named Capture
jQuery 研究心得 取得属性的值
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
Prototype1.6 JS 官方下载地址
jquery 指南/入门基础
jquery api参考 visualjquery 中国线路 速度快
js控制fieldset高度的代码
document.documentElement && document.documentElement.scrollTop
js同时按下两个方向键

Javascript 模式实例 观察者模式


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 392 ::
收藏到网摘: n/a

首先我们看看观察者的概念 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。 在园里有许多牛人都已经写过这些文章,不过大多的例子都是.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 < len; 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());

最后我们使用会怎么使用呢?(一个低能的问题...呵呵)看例子.
使用方法
复制代码 代码如下:

<!--使用方法-->
<a href="javascript://" onclick="ObserverManager.Change({FirstName:'老婆'});">改变FirstName</a>
<a href="javascript://" onclick="ObserverManager.Change({LastName:'是母老虎'});">改变LastName</a>
<a href="javascript://" onclick="ObserverManager.Change({Id:2});">改变Id</a>

我把整个例子都附上了,有兴趣的朋友可以下载来看看.
Javascript观察者模式.rar
一个人能够走多远,取决于与谁同行