第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

章節(jié)
問答
課簽
筆記
評論
占位
占位

觀察者模式的理解

圣誕主題也少量運用一些設(shè)計模式,結(jié)合下實際的代碼,讓大家對模式的實際運用有一定的理解。這里主要講解下最常見"觀察者模式"的概念,并且在后面的代碼會實際運用到

理論上說,觀察者模式又叫發(fā)布-訂閱模式,就是定義一個一對多的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生改變,所依賴它的對象將會得到這個改變的通知。在JS的實現(xiàn)級上,一般通過事件的方式模擬發(fā)布-訂閱模式

簡單的來說,我們可以這樣想下,去商場買衣服,剛好斷貨了,特別喜歡的話就會留下電話,等待賣家通知,所以就是一個典型的發(fā)布-訂閱的關(guān)系,買家不需要每天去詢問是否到貨,賣家到后才會主動通知

說了半天,在JS中用這個東東具體干嘛呢? 設(shè)計模式的核心就是為了解耦,解耦,解耦重要事說三遍。通過這個模式,一個對象可以不再顯示的調(diào)用另外一個對象的接口了,或者不關(guān)心對象的內(nèi)部運行狀態(tài),只對感興趣的事件進行觀察了,具體用法后續(xù)的頁面切換會講解到,這里先理解下如何實現(xiàn)這個模式的簡單邏輯。

JS里對觀察者模式的實現(xiàn)是通過回調(diào)來實現(xiàn)的,參考右邊的代碼observer.js,其內(nèi)部包含了3個方法:訂閱、退訂、發(fā)布也就是對應(yīng)的bind、unbind、trigger方法

創(chuàng)建一個觀察者對象

var observer = new Observer();

通過調(diào)用subscribe方法,實現(xiàn)一個事件的觀察

observer.subscribe("任務(wù)名",處理函數(shù))

通過publish觸發(fā)觀察事件,在任意時刻觸發(fā)了這個觀察的任務(wù)名,將會觸發(fā)這個事件訂閱subscribe方法

 observer.publish("任務(wù)名")

取消事件訂閱,意味著就不會執(zhí)行了

 observer.unsubscribe("任務(wù)名")

觀察者的使用場合就是:當(dāng)一個對象的改變需要同時改變其它對象,并且它不知道具體有多少對象需要改變的時候,就應(yīng)該考慮使用觀察者模式??偟膩碚f,觀察者模式所做的工作就是在解耦,讓耦合的雙方都依賴于抽象,而不是依賴于具體。從而使得各自的變化都不會影響到另一邊的變化。概念是有一點抽象的,等到后面實際結(jié)合理解。

任務(wù)

?不會了怎么辦
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數(shù)過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務(wù)號

綁定后可得到

  • · 粉絲專屬優(yōu)惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復(fù)提醒
  • · 賬號支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請您關(guān)注公眾號
關(guān)注后,及時獲悉本課程動態(tài)

舉報

0/150
提交
取消
全部 精華 我要發(fā)布
全部 我要發(fā)布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發(fā)表

為什么扣積分?

本次提問將花費2個積分

繼續(xù)發(fā)表請點擊 "確定"

為什么扣積分?