設計模式學習(二) 發布 訂閱模式

2022-09-09 18:21:23 字數 1401 閱讀 4134

發布-訂閱模式又叫觀察者模式,它定義物件間的一對多的依賴關係,當乙個物件的狀態發生變化時,所有訂閱它的物件都將得到通知;實現發布-訂閱模式有以下幾步:

// event.js

let event = ,

/*** @param key

* @param fn

*/subscribe: function (key, fn)

this.clientobj[key].push(fn)

},publish: function ()

fns.foreach(fn => )

},/** @param key */

unsubscribe (key) ,

unsubscribeall ()

},}/**

* @describe 維護乙個方法,為物件安裝發布-訂閱功能

*/export const eventmitt = function (obj)

}// 使用,index.js

import from './event.js'

let event = {}

eventmitt(event)

event.subscribe('flag1', (val) => )

event.subscribe('flag2', (val) => )

event.publish('flag1', 'test1')

event.publish('flag2', 'test2')

// event.js

export class eventmitt

} publish ()

fns.foreach(fn => )

} /**

* @param key

* @param fn

*/subscribe (key, fn)

this.clientobj[key].push(fn)

} /** @param key */

unsubscribe (key)

unsubscribeall ()

}}// 使用,index.js

import from './event.js'

const eventmitt = new eventmitt()

eventmitt.subscribe('flag1', (val) => )

eventmitt.subscribe('flag2', (val) => )

eventmitt.publish('flag1', 'test1')

eventmitt.publish('flag2', 'test2')

參考:

《j**ascript設計模式與實踐開發》

3 1 7 發布訂閱模式

發布訂閱模式和觀察者模式是兩種設計模式,在 vue 中有各自的應用場景。兩種模式的本質是相同的,但是還是有區別的,經常被混為一談。我們假定,存在乙個 訊號中心 某個任務執行完畢,就向訊號中心 發布 publish 乙個訊號,其他任務可以向訊號中心 訂閱 subscribe 這個訊號,從開知道什麼時候...

redis學習筆記05 發布訂閱模式

由於redis訊息佇列並不支援多播機制,即生產者產出一次,由中介軟體複製傳送給多個消費者的機制,為了彌補這個不足,單獨引入了發布訂閱模式的模組。使用方式如下 生產者 import redis client redis.strictredis client.publish ll pythonbooks...

ES6發布訂閱設計模式實現

發布訂閱就是將所有事件發到乙個池子 陣列 中,期間可以增減方法,要使用的時候統一依次執行,引數只能傳相同的。期間要解決的問題是陣列去重 陣列塌陷。let subsribe add func remove func fire args 優化 不用每次都要new 直接呼叫方法就行了 return new...