7 觀察者模式emit方法

2021-10-05 20:53:12 字數 2690 閱讀 2209

"../02_**/jquery.min.js"

>

<

/script>

class

observer;}

on(type,fun)

else

}emit

(type,

...funarr)

this

.msg[type]

.foreach

(function

(item)})

})}off

(type,fun)

this

.msg[type]

.foreach

((item,key)

=>})

;}}const observer=

newobserver()

; observer.on(

'你在幹嘛',a1

);observer.on(

'你在幹嘛',b1

);observer.on(

'你在幹嘛',c1

);observer.

off(

'你在幹嘛',a1

);observer.

emit

('你在幹嘛',b1

,c1);

functiona1(

)functionb1(

)functionc1(

)<

/script>

// 觀察者模式的emit方法

// emit方法,是執行呼叫,已經存在與訊息盒子中,型別中的函式方法

// 也稱為發布方法

// 實現的原理和方法

// 執行呼叫的方法,有可能是乙個或者多個,是 不定項 執行

// 需要使用 ...引數 並合運算子,將輸入的實參 以 陣列的形式儲存在 引數中

class

observer;}

on(type,fun)

else

}off

(type,fun)

// for迴圈要防止陣列坍塌 i--

// 此時必須要寫箭頭函式 因為有this指向問題

this

.msg[type]

.foreach

((item,key)

=>})

}// 第二個引數是 合併運算子,以陣列的形式儲存之後的所有的實參

// funarr中有乙個錯誤或者是不存在的 就報錯

emit

(type ,

...funarr)

// 如果型別存在,還要判斷,函式是否存在

// 如果存在,再來執行,函式

// item 是 已經儲存的 方法

// 要與 在 funarr 中 輸入 的陣列,比較

// 如果相同,證明訊息盒子中,有這個陣列,我們再執行

// 此處可用function也可以用箭頭函式

this

.msg[type]

.foreach

(function

(item)})

})}}

// 建立觀察者

const observer =

newobserver()

;// 第一次新增打**型別,是新增型別,並且賦值乙個陣列,儲存函式

observer.on(

'打**'

, da1)

;// 打**,型別已經存在,直接向陣列中新增函式就可以了

observer.on(

'打**'

, da2)

;// 寫檢查

observer.on(

'寫檢查'

, jian1)

; observer.on(

'寫檢查'

, jian2)

; observer.on(

'寫檢查'

, jian3)

;// 沒收手機

observer.on(

'沒收手機'

, mo1)

; observer.on(

'沒收手機'

, mo2)

; observer.on(

'沒收手機'

, mo3)

; console.

log(observer)

;// jian1 , jian2 , jian3 以陣列的形式,儲存在引數2中

observer.

emit

('寫檢查'

, jian1 , jian5 )

// 函式必須是提前定義好的,有函式名稱,或者變數名稱的,這樣才能刪除

function

da1(

)function

da2(

)function

jian1()

function

jian2()

function

jian3()

function

jian5()

function

mo1(

)function

mo2(

)function

mo3(

)<

/script>

設計模式7 觀察者模式

定義 也叫發布訂閱模型。觀察者模式定義物件間一種一對多的依賴關係,使得每當乙個物件改變狀態,則所有依賴於它的物件都會得到通知並被自動更新。觀察者模式的優點 1 觀察者和被觀察者之間是抽象耦合 2 建立一套觸發機制 缺點 開發效率和除錯比較複雜,有多個觀察者時要考慮使用非同步的方式,否則乙個觀察者卡殼...

python觀察者模式 python 觀察者模式

python 觀察者模式 前言e 寫的倉促就不截uml類圖了,書本chapter10,p313能看到圖 一旦觀察的主題有更新,就會通知到觀察者們,下面的例子是最簡單的乙個觀察者範例,假設這是一群投機分子密切關注 軍 火 倉庫的產品與數量變動 class inventory def init self...

觀察者模式

觀察者模式 observer 完美的將觀察者和被觀察的物件分離開。舉個例子,使用者介面可以作為乙個觀察者,業務資料是被觀察者,使用者介面觀察業務資料的變化,發現資料變化後,就顯示在介面上。物件導向設計的乙個原則是 系統中的每個類將重點放在某乙個功能上,而不是其他方面。乙個物件只做一件事情,並且將他做...