觀察者模式與發布訂閱模式對比

2021-09-02 17:31:50 字數 1251 閱讀 2676

直接上**,很簡單的兩個例子:

// subscribe_publish: 發布訂閱模式

// 有乙個中間的事件通訊通道,訂閱者a和發布者b是通過pubsub這個物件關聯起來的,他們沒有直接的交流。

console.

log(

"pubsub:"

)var pubsub =((

)=>

;function

subscrbe

(topic, fn)

topics[topic]

.push

(fn);}

function

publish

(topic,

...args)

}return})

();pubsub.

subscrbe

('test'

,function

(a,b)

)pubsub.

publish

('test'

,'hello'

,'world!');

console.

log(

"-----------------------------");

// observer: 觀察者模式

// 乙個或多個觀察者對目標的狀態感興趣,通過將自己依附在目標物件上以便註冊所感興趣的內容。

// 目標狀態發生改變並且觀察者可能對這些改變感興趣,會傳送乙個通知訊息,呼叫每個觀察者的更新方法。

// 當觀察者不再對目標狀態感興趣時,他們可以簡單將自己從中分離。

console.

log(

"observer:");

class

subject

addsubs

(sub)

nodify()

)}}class

observer

}let subject =

newsubject()

;let ob =

newobserver()

;subject.

addsubs

(ob)

;subject.

nodify()

;// 目標和觀察者是直接聯絡在一起的。觀察者把自身新增到了目標物件中,可見和發布訂閱模式差別還是很大的。

// 在這種模式下,目標更像乙個發布者,他讓新增進來的所有觀察者都執行了update函式,而觀察者就像乙個訂閱者。

參考文章:

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

兩個模式的實現結構 觀察者模式 觀察者 observer 直接訂閱 subscribe 主題 subject 而當主題被啟用的時候,會觸發 fire event 觀察者裡的事件。觀察者模式定義了物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都將得到通知,並自動更新。觀察...

觀察者模式(發布訂閱模式)

簡介 觀察者模式 又被稱為發布 訂閱 public subscribe 模式,屬於行為型模式的一種,它定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件再狀態變化時,會通知所有的觀察者物件,使他們能夠自動更新自己。塊 public 發布動態 button 觀察者 粉絲 ...

觀察者模式 訂閱發布模式

觀察者模式是一種物件間的一對多依賴關係,當乙個物件的狀態發生變化時,所有依賴他的物件都將得到通知。通常運用在物件之間的訊息通訊中。比如現在有一群學生,可以組成小組,可以尋求幫助 class students askforhelp subject 向大家尋求幫助 this.tasks.foreach ...