直接上**,很簡單的兩個例子:
// 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 ...