初步學習發布 訂閱模式

2021-08-20 18:52:14 字數 896 閱讀 3335

優點:物件之間的解耦;非同步程式設計中更鬆耦合的**編寫

缺點:建立訂閱者本身需要消耗一定的時間和記憶體;多個發布者和訂閱者巢狀在一起的時候程式難以跟蹤維護。

簡單來說就是可以有多個訂閱者把自己想要訂閱的東西註冊到排程中心,然後觸發事件,發布者會更新事件到排程中心,訂閱者獲得自己想要的。簡單點說關係如下圖:

訂閱者a,b,c把自己想要訂閱的事件註冊到排程中心,包括他的處理過程,發布者f把資訊發布到排程中心,排程中心會用訂閱者註冊的處理過程來處理資訊然後返回給各自的訂閱者。訂閱者和發布者是不直接聯絡的是要通過排程中心來傳遞訊息,這裡和觀察者模式還是有區別的。

下面是老師給的乙個小練習:

pubsub.js

module.

exports =

class

pubsub ; }

subscribe(

type,

fn)

this.

subscribers[

type]

.push(

fn); }

unsubscribe(

type,

fn)

publish(

type, ...

args) }

}test.js

describe(

'pubsub', ()

=> );

it('subscribe -> publish -> unsubscribe -> publish',

async ()

=> );

});因為我也是初學者理解不是很透徹,如果有什麼不對的地方還請各位大神多多指點。

發布 訂閱模式

發布 訂閱模式又叫觀察者模式,它定義物件間的一種一對多的關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都將得到通知。在js中,我們一般用事件模型來替代傳統的發布 訂閱模式。實現 varpubsub function p 訂閱 p.subscribe function flag,fn 發布 p....

發布訂閱模式

不同的語言,相同的模式。最近在關注設計模式的知識,發布訂閱模式其實是物件間一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴與它的物件都將得到狀態改變的通知。作用 1 廣泛應用於非同步程式設計中 2 物件間鬆散耦合的編寫 自定義事件 let corp 定義乙個公司物件 這裡放乙個列表來緩衝回掉函...

發布訂閱模式

前言 應用場景 專案做久了以後會越來越大,當很多人去做同乙個人專案的時候,裡面的邏輯耦合度當然是越低越好,有這麼乙個場景 需求 3個人同時開發乙個專案的時候,分別開發登入模組login 商品模組showshoplist 書籍模組showbooklist 當使用者登入成功的時候,需要使用者資訊去重新整...