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

2021-10-19 22:12:31 字數 2508 閱讀 2724

物件間的一種一對多的關係,當乙個物件發生改變時,所有依賴它的物件都會得到通知。

比如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 ...