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 發布訂閱模式,訂閱者把想訂閱的事件註冊到排程中心,當該事件觸發的時候,發布者發布該事件到排程中心 順帶上下文 由排程中心統一排程訂閱者曾經註冊到排程中心的處理 定義排程...