物件間的一種一對多的關係,當乙個物件發生改變時,所有依賴它的物件都會得到通知。
比如wb上的明星和其粉絲的關係,粉絲在wb上訂閱了明星,所以當明星在wb上發表動態時所有粉絲都將得到通知。
js具體實現:事件***
有三個角色:
訂閱者(subscriber)
訊息分發器(msgdistributor)
wb例子:
doctype
html
>
lang
="en"
>
>
charset
="utf-8"
>
name
="viewport"
content
="width=device-width, initial-scale=1.0"
>
>
documenttitle
>
head
>
>
>
function
fensi
(name, weibo
)return
}function
mingxing
(mingxingname, weibo
)return
}function
weibo()
;//const
publish=(
pubtype, callback
)=>)}
const
subscribe=(
subtype, subname
)=>
return
}// 小明和小芳關注了wyf,小華和小美關注了lh,小芳和小美關注了yyqx,只有wjw沒有人關注。
const weibo1 =
newweibo()
;const xiaoming =
newfensi
('小明'
, weibo1)
;const xiaofang =
newfensi
('小芳'
, weibo1)
;const xiaohua =
newfensi
('小華'
, weibo1)
;const xiaomei =
newfensi
('小美'
, weibo1)
;const xiaomeng =
newfensi
('小萌'
,weibo1)
;const wuyifan =
newmingxing
('wyf'
, weibo1)
;const luhan =
newmingxing
('lh'
, weibo1)
;const yiyangqianxi =
newmingxing
('yyqx'
, weibo1)
;const wangjingwei =
newmingxing
('wjw'
, weibo1)
; xiaoming.
guanzhu
('wyf');
xiaofang.
guanzhu
('wyf');
xiaohua.
guanzhu
('lh');
xiaomei.
guanzhu
('lh');
xiaofang.
guanzhu
('yyqx');
xiaomei.
guanzhu
('yyqx');
xiaomeng.
guanzhu
('wjw');
wuyifan.
fabu((
fensi
)=>console.
log(fensi +
'你好!很高興你關注了我!我是wyf'))
; luhan.
fabu((
fensi
)=>console.
log(fensi +
'你好!很高興你關注了我!我是lh'))
; yiyangqianxi.
fabu((
fensi
)=>console.
log(fensi +
'你好!很高興你關注了我!我是yyqx'))
; wangjingwei.
fabu((
fensi
)=>console.
log(fensi +
'你好!很高興你關注了我!我是wjw'))
;script
>
body
>
html
>
js觀察者模式發布 訂閱
實習期結束,最近回到學校開始學習node.js,node果然是強大。不過在涉及到檔案操作的時候,發現要大量使用非同步回掉操作。以前在寫頁面的時候,從沒這麼多非同步操作,只有在使用 setinterval 和 xmlhttprequest 時了解了一下非同步程式設計。這次在學習node的過程中,把非同...
觀察者模式(發布訂閱模式)
簡介 觀察者模式 又被稱為發布 訂閱 public subscribe 模式,屬於行為型模式的一種,它定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件再狀態變化時,會通知所有的觀察者物件,使他們能夠自動更新自己。塊 public 發布動態 button 觀察者 粉絲 ...
觀察者模式 訂閱發布模式
觀察者模式是一種物件間的一對多依賴關係,當乙個物件的狀態發生變化時,所有依賴他的物件都將得到通知。通常運用在物件之間的訊息通訊中。比如現在有一群學生,可以組成小組,可以尋求幫助 class students askforhelp subject 向大家尋求幫助 this.tasks.foreach ...