日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

JavaScript設(shè)計(jì)模式之觀察者模式實(shí)例詳解

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

JavaScript設(shè)計(jì)模式之觀察者模式實(shí)例詳解


(2)擴(kuò)展一個(gè)發(fā)布者的發(fā)布消息的方法(推模式)
JavaScript設(shè)計(jì)模式之觀察者模式實(shí)例詳解


(3)擴(kuò)展公共訂閱的函數(shù),和取消訂閱的函數(shù)
【JavaScript設(shè)計(jì)模式之觀察者模式實(shí)例詳解】訂閱的函數(shù):
JavaScript設(shè)計(jì)模式之觀察者模式實(shí)例詳解


取消的函數(shù):
JavaScript設(shè)計(jì)模式之觀察者模式實(shí)例詳解


(4)創(chuàng)建發(fā)布的實(shí)例
JavaScript設(shè)計(jì)模式之觀察者模式實(shí)例詳解


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


(5.2)創(chuàng)建主應(yīng)用函數(shù)
JavaScript設(shè)計(jì)模式之觀察者模式實(shí)例詳解


最后,訂閱者界面
JavaScript設(shè)計(jì)模式之觀察者模式實(shí)例詳解


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


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


補(bǔ)充:上述用到的forEach方法和filter方法代碼為:
JavaScript設(shè)計(jì)模式之觀察者模式實(shí)例詳解


總結(jié):
JavaScript設(shè)計(jì)模式之觀察者模式實(shí)例詳解


1.支持簡單的廣播通信,自動通知所有的監(jiān)聽者 。
2.當(dāng)頁面載入后,被觀察對象很容易與觀察者有一種動態(tài)關(guān)聯(lián)的關(guān)系,來增加靈活性 。
3.被觀察對象,與觀察者之間的抽象耦合關(guān)系能夠單獨(dú)的擴(kuò)展和重用 。


    推薦閱讀