ES6發布訂閱設計模式實現

2021-10-03 16:22:07 字數 864 閱讀 8017

發布訂閱就是將所有事件發到乙個池子(陣列)中,期間可以增減方法,要使用的時候統一依次執行,引數只能傳相同的。期間要解決的問題是陣列去重、陣列塌陷。

let

_subsribe=(

)=>

add(func)

remove

(func)})

}fire

(...args)

}//優化 不用每次都要new 直接呼叫方法就行了

return

newsub()

}//建立

let aa =

_subsribe()

function

fn1(e)

letfn2=(

)=>

letfn3=(

)=>

letfn4

=(ev)

=>

aa.add

(fn1)

aa.add

(fn2)

aa.add

(fn3)

aa.add

(fn4)

//建立input元素

let o = document.

createelement

('input'

)//將input插入到html中

let oo = document.

queryselector

('#root'

)oo.

insertbefore

(o,null

)//可以傳遞onclick的預設event引數

o.onclick

=function

(ev)

3 1 7 發布訂閱模式

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

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

發布 訂閱模式又叫觀察者模式,它定義物件間的一對多的依賴關係,當乙個物件的狀態發生變化時,所有訂閱它的物件都將得到通知 實現發布 訂閱模式有以下幾步 event.js let event param key param fn subscribe function key,fn this.client...

Redis 設計與實現 (六) 發布訂閱

發布訂閱 發布者 頻道 訂閱者 發布和訂閱都是客戶端頻道是服務端 1 publish subscribe 模式 開啟乙個命令窗體,redis訂閱者 redis cli 127.0.0.1 6379 subscribe channel 1 reading messages.press ctrl c t...