JavaScript設計模式之觀察者模式實例詳解

本文實例講述了JavaScript設計模式之觀察者模式 。分享給大家供大家參考,具體如下:
觀察者模式
觀察者模式又叫發布訂閱模式(Publish/Subscribe),它定義了一種一對多的關系,讓多個觀察者對象同時監聽某一個主題對象,這個主題對象的狀態發生變化時就會通知所有的觀察者對象,使得它們能夠自動更新自己 。
* 它分為2個角色:(1)觀察者 (2)被觀察者
* 觀察者模式的目的:對程序的內在變化進行觀察,當其有變化的時候 , 你可以得知,并且可以做出相應的反應 。
現在我們通過一個需求來學習該模式:模擬訂閱者和報社之間的關系
在這個過程中:實際的操作分為(推模式,拿模式)
(1)推送-->長連接技術
(2)拿模式-->定時去后臺去取得
使用代碼實現如下:
(1)發布類

JavaScript設計模式之觀察者模式實例詳解

(2)擴展一個發布者的發布消息的方法(推模式)
JavaScript設計模式之觀察者模式實例詳解

(3)擴展公共訂閱的函數,和取消訂閱的函數
訂閱的函數:
JavaScript設計模式之觀察者模式實例詳解

取消的函數:
JavaScript設計模式之觀察者模式實例詳解

(4)創建發布的實例
JavaScript設計模式之觀察者模式實例詳解

(5)發布部分
(5.1)使用門面模式--針對各瀏覽器的事件綁定兼容問題
JavaScript設計模式之觀察者模式實例詳解

(5.2)創建主應用函數
【JavaScript設計模式之觀察者模式實例詳解】
JavaScript設計模式之觀察者模式實例詳解

最后,訂閱者界面
JavaScript設計模式之觀察者模式實例詳解

效果為:
(1)cctv模塊的
JavaScript設計模式之觀察者模式實例詳解

(2)gfb的效果為:
JavaScript設計模式之觀察者模式實例詳解

補充:上述用到的forEach方法和filter方法代碼為:
JavaScript設計模式之觀察者模式實例詳解

總結:
JavaScript設計模式之觀察者模式實例詳解

1.支持簡單的廣播通信,自動通知所有的監聽者 。
2.當頁面載入后,被觀察對象很容易與觀察者有一種動態關聯的關系,來增加靈活性 。
3.被觀察對象 , 與觀察者之間的抽象耦合關系能夠單獨的擴展和重用 。


相關經驗推薦