一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

Javascript 模式實(shí)例 觀察者模式

在園里有許多牛人都已經(jīng)寫(xiě)過(guò)這些文章,不過(guò)大多的例子都是.NET,今天我要舉一個(gè)JS的使用實(shí)例.有興趣的朋友可以先了解一下一些牛人的,比如李會(huì)軍大哥設(shè)計(jì)模式篇中觀察者的那一節(jié)
http://www.cnblogs.com/Terrylee/archive/2006/10/23/Observer_Pattern.html
說(shuō)說(shuō)我自己對(duì)這模式的理解,其思想核心是:每個(gè)被觀察對(duì)象都依據(jù)對(duì)象數(shù)據(jù)的改變而改變,被觀察對(duì)象一定要有同樣的改變行為來(lái)約束,這個(gè)約束是被觀察對(duì)象提供給觀察器的統(tǒng)一接口。觀察器會(huì)開(kāi)發(fā)改變數(shù)據(jù)的行為。

JS是弱類(lèi)型的腳本,很多東西都要約定的,不象.NET會(huì)有接口的約束,廢話(huà)不多說(shuō),我們直接看實(shí)例:
觀察者實(shí)例
復(fù)制代碼 代碼如下:
var ObserverObj = { /**//*依賴(lài)對(duì)象*/
FirstName: "Max",
LastName: "Gan",
Id: 1
}
var ObserverManager = { /**//*觀察器*/
Observers:[], /**//*觀察對(duì)象集*/
AddObserver: function(item){/**//*加入觀察對(duì)象*/
this.Observers.push(item);
},
Change: function(obj){ /**//*改變對(duì)象行為*/
for(var item in obj){
ObserverObj[item] = obj[item];
}//改變數(shù)據(jù)依賴(lài)對(duì)象數(shù)據(jù)
for(var i = 0,len = this.Observers.length; i < len; i++){
var item = this.Observers[i];
item.Display(); //對(duì)象改變后,改變觀察對(duì)象的行為Display; 為統(tǒng)一的接口
}
}
}
var Header = function(){ /**//*觀察對(duì)象Header*/
this.Display = function(){
alert(ObserverObj.FirstName);
}
}
var Content = function(){ /**//*觀察對(duì)象Content*/
this.Display = function(){
alert(ObserverObj.LastName);
}
}
var Foot = function(){ /**//*觀察對(duì)象Foot*/
this.Display = function(){
alert(ObserverObj.Id);
}
}

上面的例子ObserverManager只提供了綁定的方法(AddObserver),其他的什么取消綁定啊之類(lèi)的代碼技巧,可能大家想一下就知道了.其實(shí)這些代碼的最終目的就是當(dāng)改變了Observers數(shù)據(jù),其他的被對(duì)象也會(huì)根據(jù)數(shù)據(jù)的改變作出相應(yīng)的回應(yīng).OK,現(xiàn)在我們把他們綁定一下.
復(fù)制代碼 代碼如下:
/***綁定觀察器動(dòng)作***/
ObserverManager.AddObserver(new Header());
ObserverManager.AddObserver(new Content());
ObserverManager.AddObserver(new Foot());

最后我們使用會(huì)怎么使用呢?(一個(gè)低能的問(wèn)題...呵呵)看例子.
使用方法
復(fù)制代碼 代碼如下:
<!--使用方法-->
<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>

我把整個(gè)例子都附上了,有興趣的朋友可以下載來(lái)看看.
Javascript觀察者模式.rar
一個(gè)人能夠走多遠(yuǎn),取決于與誰(shuí)同行

JavaScript技術(shù)Javascript 模式實(shí)例 觀察者模式,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 精品国产a| 一区二区三区观看 | 97精品伊人久久大香线蕉 | 免费小视频在线观看 | 国内精品国语自产拍在线观看91 | 成人免费草草视频 | 免费国产一区二区三区 | 精品91麻豆免费免费国产在线 | 一本久道久久综合多人 | 欧美三级网址 | jizz亚洲视频 | 精品国产91乱码一区二区三区 | 亚洲综合一区二区不卡 | 91精品国产一区二区三区左线 | 亚洲欧美色中文字幕 | 成人亚洲视频在线观看 | 九九99久久精品午夜剧场免费 | 一区二区精品视频 | 特大巨黑吊在线播放 | 69国产精品视频免费 | 免费网站看黄 | 亚洲综合久 | 免费大学生国产在线观看p 免费的成人a视频在线观看 | 国产91在线精品福利 | 乱子伦免费视频中文字幕 | 一区二区精品 | 综合区小说区图片区在线一区 | 四虎国产精品永久地址99 | 2021成人国产精品 | 成年人国产视频 | 欧美图片在线观看 | www.日本一区 | 一本久道久久综合 | 国产成人精选免费视频 | 国内视频一区二区 | 国产自产一c区 | 国产精品久久久久久久久岛 | 国产夜趣福利免费视频 | 亚洲网站在线播放 | 国内精品一区视频在线播放 | 91短视频免费在线观看 |