日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

观察者模式——解耦利器

發(fā)布時間:2024/9/30 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 观察者模式——解耦利器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

觀察者模式是一個使用率非常高的模式,常用于 訂閱——發(fā)布系統(tǒng)。
其 最重要的作用就是 解耦,將觀察者和被觀察者解耦,讓他們之間的依賴性更小。具體應(yīng)用也就是說 讓 UI層 和具體的業(yè)務(wù)邏輯解耦。

看計算機書籍的定義:定義對象間一種一對多的依賴關(guān)系,使得每當(dāng)一個對象改變狀態(tài),則所有依賴于他的對象都會得到通知和更新。

使用場所:1,事件多集觸發(fā) ;2 跨系統(tǒng)的消息交換場景,例如消息隊列,事件總線的處理機制等。

大致角色分類:

被觀察者(Observable):抽象的角色,把所有觀察者對象的引用保存在一個集合里,數(shù)量不定,對外提供一個接口,方便進行添加和刪除觀察者對象。

具體被觀察者(ConcerteObservable):也就是我們的具體事件,當(dāng)我們的這個事件內(nèi)部狀態(tài)發(fā)生改變時候,給所有的注冊過的觀察者發(fā)出通知.

觀察者(Observer): 抽象角色, 觀察者的抽象類,對外提供一個接口,方便得到通知時更新自己。

具體觀察者(ConcereteObserver): 具體的觀察者, 觀察者的接口更新實例類, 當(dāng)接到通知時候 及時更新自己。

代碼舉例:超市——購物者
觀察者:購物者

被觀察者:超市

具體實現(xiàn)

  • 輸出內(nèi)容:

    這個觀察者的Demo就完成了。

    Observer 和Observable 是jdk的內(nèi)置類型,觀察者這個模式很重要。具體本人就不再做過多的解釋。

    小結(jié)一下:
    觀察者模式主要作用就是對象的解耦,將觀察者和被觀察者完全分離。只是依賴于Observer 和Observable 的抽象。

    優(yōu)點: Observer 和Observable 之間是抽象耦合, 應(yīng)對業(yè)務(wù)變化。 增強的系統(tǒng)的靈活性,和擴展性。
    缺點: 運行效率問題,一個被觀察者,多個觀察者,開發(fā)和調(diào)試比較麻煩, java消息通知是默認(rèn)順序執(zhí)行的, 一個觀察者卡頓了,整體效率會下降,不過我們可以考慮 異步方式來解決。

    觀察者模式——在Android中的應(yīng)用 ,有時間在告訴大家啦。

    與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的观察者模式——解耦利器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。