JS中的觀察者模式DEMO
觀察者模式:
這是一種建立鬆散耦合程式碼的技術。它定義物件間 一種一對多的依賴關係,當一個物件的狀態發生改變時,所有依賴於它的物件都將得到通知。由主體和觀察者組成,主體負責釋出事件,同時觀察者透過訂閱這些事件來觀察該主體。主體並不知道觀察者的任何事情,觀察者知道主體並能註冊事件的回撥函式。
例子:
假如我們正在開發一個商城網站,網站裡有header頭部、nav導航、訊息列表、購物車等模組。這幾個模組的渲染有一個共同的前提條件,就是必須先用ajax非同步請求獲取使用者的登入資訊。這是很正常的,比如使用者的名字和頭像要顯示在header模組裡,而這兩個欄位都來自使用者登入後返回的資訊。這個時候,我們就可以把這幾個模組的渲染事件都放到一個陣列裡面,然後待登入成功之後再遍歷這個陣列並且呼叫每一個方法。
var Event = {
// 透過on介面監聽事件eventName
// 如果事件eventName被觸發,則執行callback回撥函式
on: function (eventName, callback) {
//我的程式碼
if(!this.handles){
this.handles={};
}
if(!this.handles[eventName]){
this.handles[eventName]=[];
}
this.handles[eventName].push(callback);
},
// 觸發事件 eventName
emit: function (eventName) {
//你的程式碼
//console.info('eventName', eventName);
// console.info('this.handles', this.handles);
if(this.handles[arguments[0]]){
for(var i=0;ithis.handles[arguments[0]];
}
}
}
};
// 繫結事件
Event.on('test', function (result) {
console.log(result);
});
Event.on('test', function () {
console.log('test');
});
Event.emit('test', 'hello world'); // 輸出 'hello world' 和 'test'
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2318/viewspace-2799562/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JS設計模式(觀察者模式)JS設計模式
- Spring中的觀察者模式Spring模式
- JS觀察者模式-自定義事件JS模式事件
- JS原生實現觀察者模式JS模式
- 設計模式中的觀察者模式設計模式
- js 觀察者模式 訂閱釋出模式JS模式
- Android 中的設計模式:觀察者模式Android設計模式
- 觀察者模式模式
- 觀察者模式——RecyclerView中的應用模式View
- Java中的設計模式(一):觀察者模式Java設計模式
- javascript(js) 觀察者模式和釋出訂閱模式JavaScriptJS模式
- PHP觀察者模式PHP模式
- 觀察者模式(2)模式
- Unity——觀察者模式Unity模式
- 觀察者模式-將訊息通知給觀察者模式
- RxJS 中的觀察者和迭代器模式JS模式
- 進擊的觀察者模式模式
- 觀察者模式與釋出訂閱模式區別 - JS模式JS
- 設計模式 —— 觀察者模式設計模式
- 設計模式(觀察者模式)設計模式
- 設計模式----觀察者模式設計模式
- 【設計模式】觀察者模式設計模式
- 設計模式——觀察者模式設計模式
- 【設計模式】漢堡中的設計模式——觀察者模式設計模式
- observer-觀察者模式Server模式
- 重構 - 觀察者模式模式
- 18_觀察者模式模式
- PHP-觀察者模式PHP模式
- 大話--觀察者模式模式
- PHP 之觀察者模式PHP模式
- redux與觀察者模式Redux模式
- 觀察者模式介紹模式
- PHP設計模式-觀察者模式PHP設計模式
- Java設計模式-觀察者模式Java設計模式
- 行為型模式:觀察者模式模式
- 設計模式解析:觀察者模式設計模式
- 行為型模式--觀察者模式模式
- 設計模式之觀察者模式設計模式