觀察者模式和發布訂閱模式

2022-06-15 21:15:14 字數 1158 閱讀 5052

參考

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 ...

設計模式 觀察者和發布訂閱模式

最近在學習設計模式,本文就同乙個例子對觀察者和發布訂閱進行 觀察者模式 比較概念的解釋是,目標和觀察者是基類,目標提供維護觀察者的一系列方法,觀察者提供更新介面。具體觀察者和具體目標繼承各自的基類,然後具體觀察者把自己註冊到具體目標裡,在具體目標發生變化時候,排程觀察者的更新方法。舉個例子 比如有個...