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