亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

章節
問答
課簽
筆記
評論
占位
占位

觀察者模式的理解

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

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

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

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

JS里對觀察者模式的實現是通過回調來實現的,參考右邊的代碼observer.js,其內部包含了3個方法:訂閱、退訂、發布也就是對應的bind、unbind、trigger方法

創建一個觀察者對象

var observer = new Observer();

通過調用subscribe方法,實現一個事件的觀察

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

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

 observer.publish("任務名")

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

 observer.unsubscribe("任務名")

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

任務

?不會了怎么辦
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務號

綁定后可得到

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

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

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

邀請您關注公眾號
關注后,及時獲悉本課程動態

舉報

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

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?