參考
1、觀察者模式,定義物件間一種一對多的依賴關係,使得每當乙個物件改變狀態,則所有依賴於它(改變的狀態)的物件都會得到通知。
2、發布訂閱模式,訂閱者把想訂閱的事件註冊到排程中心,當該事件觸發的時候,發布者發布該事件到排程中心(順帶上下文),由排程中心統一排程訂閱者曾經註冊到排程中心的處理**。
定義排程中心函式物件:
1、使用乙個物件作為調動中心的快取clientlist,
2、add方法負責把訂閱的事件註冊到排程中心的快取中,用來存放訂閱者的**函式以便通知到訂閱者
3、tigger方法負責發布訊息時,遍歷快取,依次觸發裡面的**函式
4、delete方法負責,取消之前的訂閱。
const subscribe = (function(), add, trigger,remove;
/*** 增加訂閱者,
* @key 型別
* @fn 型別
*//*
* * 訂閱
*/add = function
(key, fn)
clientlist[key].push(fn);
}/**
* 發布
*/trigger = function
()
for (let i = 0,fn;fn=fns[i++];)
}/**
* 刪除訂閱
* key型別
* fn**函式
*/remove = function
(key, fn)
if(!fn)
else}}
}return
})()
//新增訂閱
subscribe.addlisten('key1',function
(d , all))
subscribe.addlisten('key2',function
(d, all))
// 發布訊息
subscribe.trigger('key1','luhan','娃娃臉'); //
luhan長了一娃娃臉
subscribe.trigger('key2','wuyifan','耍帥'); //
wuyifan喜歡做的事情是耍帥
觀察者模式(發布訂閱模式)
簡介 觀察者模式 又被稱為發布 訂閱 public subscribe 模式,屬於行為型模式的一種,它定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件再狀態變化時,會通知所有的觀察者物件,使他們能夠自動更新自己。塊 public 發布動態 button 觀察者 粉絲 ...
觀察者模式 訂閱發布模式
觀察者模式是一種物件間的一對多依賴關係,當乙個物件的狀態發生變化時,所有依賴他的物件都將得到通知。通常運用在物件之間的訊息通訊中。比如現在有一群學生,可以組成小組,可以尋求幫助 class students askforhelp subject 向大家尋求幫助 this.tasks.foreach ...
設計模式 觀察者和發布訂閱模式
最近在學習設計模式,本文就同乙個例子對觀察者和發布訂閱進行 觀察者模式 比較概念的解釋是,目標和觀察者是基類,目標提供維護觀察者的一系列方法,觀察者提供更新介面。具體觀察者和具體目標繼承各自的基類,然後具體觀察者把自己註冊到具體目標裡,在具體目標發生變化時候,排程觀察者的更新方法。舉個例子 比如有個...