發布訂閱 跟 觀察者模式的關係和區別

2021-09-27 03:47:06 字數 802 閱讀 8219

什麼是發布訂閱?這裡實現乙個簡單的發布訂閱說明一下。

myevent = ,

emit()

}myevent.on(()=>)

myevent.on(()=>)

myevent.on(()=>)

myevent.emit();      //列印三個訂閱順序

發布訂閱原理比較簡單。每次訂閱就往陣列裡面新增乙個方法。當emit觸發是將整個陣列遍歷一遍讓方法逐個執行。

什麼是觀察者?這裡實現乙個簡單的觀察者模式說明。

class child

attrcurrent(o)

setstate(newstate)

}class parent

updata(newstate)

}const father = new parent("爸爸");

const mother = new parent("媽媽");

const son = new child("兒子");

son.attrcurrent(father);

son.attrcurrent(mother);

son.setstate("長大了,打算結婚了");

觀察者模式需要把觀察者註冊到被觀察者身上去。通過被觀察者自身狀態的變化通知觀察者自身狀態變了。

所以,從這裡可以看出。發布跟訂閱是沒有關係的。完全可以只訂閱不發布。或者只發布不訂閱都是ok的。但是,觀察者模式的觀察者跟被觀察者之間是有關係的。其實,觀察者模式是包含發布訂閱模式的。原理都是將待執行的方法儲存起來。等到狀態變化或者被發布出去的時候遍歷儲存方法的陣列進行方法的執行。

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

參考 1 觀察者模式,定義物件間一種一對多的依賴關係,使得每當乙個物件改變狀態,則所有依賴於它 改變的狀態 的物件都會得到通知。2 發布訂閱模式,訂閱者把想訂閱的事件註冊到排程中心,當該事件觸發的時候,發布者發布該事件到排程中心 順帶上下文 由排程中心統一排程訂閱者曾經註冊到排程中心的處理 定義排程...

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

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

觀察者模式 訂閱發布模式

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