發布訂閱模式

2021-08-20 13:19:09 字數 1221 閱讀 7816

不同的語言,相同的模式。

最近在關注設計模式的知識,發布訂閱模式其實是物件間一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴與它的物件都將得到狀態改變的通知。

作用:1、廣泛應用於非同步程式設計中

2、物件間鬆散耦合的編寫**

自定義事件:

let    corp={}; //定義乙個公司物件

//這裡放乙個列表來緩衝回掉函式

crop.list = ;

//去訂閱事件

corp.on = function(fn) )

//測試用例

corp.on(function (position , salary) ;

//這次換成乙個物件型別的緩衝列表

corp.list = {};

corp.on = function(key , fn)

//把函式加到對應key的緩衝列表裡

this.list[key].push(fn)

corp.emit = function()

//遍歷key值對應的緩衝列表

//一次執行函式方法

fns.foreach (fn => )

//測試用例

corp.on( 'join' , (position , salary) => {

console.log( '你的職位是:' + position);

console.log( '期望薪水:'  + salary)

corp.on( 'other' , (skill , hobby) => {

console.log('你的技能有' + skill)

console.log( '愛好' + hobby)

corp.emit( 'join' , '前端' , 10000);

corp.emit( 'join' , '後端' , 10000);

corp.emit( 'other' , '端茶和倒水' ,'足球')

思路:建立乙個物件(緩衝列表)

on方法用來把回掉函式fn,都加到緩衝列表中

emit方法取到arguments裡第乙個當作key,根據key值去執行對應緩衝列表中的函式

remove方法根據key值去取消訂閱

總結:優點:

物件之間解耦

非同步程式設計中,可以更鬆耦合的**編寫

缺點:建立訂閱者本身要消耗一定的時間和記憶體

多個發布者和訂閱者巢狀一起的時候,程式很難跟蹤維護

發布 訂閱模式

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

發布訂閱模式

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

發布 訂閱模式

一 核心概述 發布訂閱模式主要包含三大塊 快取陣列 訂閱 發布 快取陣列 乙個陣列 訂閱往陣列裡面壓入函式fn 發布裡面迴圈遍歷陣列,然後執行陣列中的函式。二 簡單 實現及改進 1 實現 var subpub subpub.cache subpub.subscribe function fn sub...