觀察者模式和訂閱者模式

2021-10-25 07:10:15 字數 1348 閱讀 9749

1、要有個存放訂閱的事件佇列

2、通過on去訂閱事件

3、emit去觸發事件

const fs =

require

('fs');

// node的自帶模組

const path =

require

('path');

const

resolve=(

...file)

=>

;console.

log(

resolve

('../age.txt'))

;let eventobj =

,emit()

);}}

;let obj =

;fs.

readfile

(resolve

('../age.txt'),

'utf8'

,function

(err, data));

fs.readfile

(resolve

('../name.txt'),

'utf8'

,function

(err, data));

eventobj.on(

()=>

console.

log(

'當前資料讀取了');

});

將所有的觀察者都放到被觀察者中 (基於發布訂閱的) 裡面內部有關聯的

// 被觀察者

class

subject

// 被觀察者中要存放所有的觀察者

attach

(o)setstate

(newstate));

}}}class

observer

update

(baby)

}// 被觀察者

let baby =

newsubject

('小寶寶');

let o1 =

newobserver

('爸爸');

let o2 =

newobserver

('媽媽');

baby.

attach

(o1)

;baby.

attach

(o2)

;baby.

setstate

('有人打我');

// 列印

// 小寶寶跟爸爸說:有人打我

// 小寶寶跟媽媽說:有人打我

訂閱者模式是通過中介關聯事件

觀察者模式要被觀察者和觀察者直接關聯事件

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

include include include struct notification virtual void process 0 class subscribera public notification class subscriberb public notification class p...

觀察者模式(訂閱模式)

定義物件間一種一對多的關係,使得每當乙個物件改變狀態,則所有依賴他的物件都會得到通知並被自動更新。使用場景 1 某些時候需要一些物件有所關聯,而且這種關聯是可以拆分而不是組合在一起的。2 某一事件發生,需要向多方觸發。3 訊息交換,如訊息佇列 事件匯流排的處理機制。1 subject 抽象主題,被觀...

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

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