91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

“Head First 設計模式“ :觀察者模式

發布時間:2020-06-29 17:15:34 來源:網絡 閱讀:303 作者:u2r2otkit 欄目:軟件技術

觀察者模式


    觀察者模式定義了對象之間的一對多依賴,這樣一來,當一個對象改變狀態時,它的所有依賴者都會收到通知并自動更新。一方可稱為主題(subject),另一方可稱為觀察者(observer),一個主題可擁有多個觀察者。當主題的數據有變動時,就會通知所有訂閱了它的觀察者。在這之后的操作有兩種:

  • :主題直接將數據推送給所有觀察者。

  • :主題通知了所有觀察者后,每個觀察者再根據自己的需要從主題拉取所需數據。

    現實中的列子: 報紙出版社+訂閱者=觀察者模式,找工作+獵頭=觀察者模式


概念圖:

“Head First 設計模式“ :觀察者模式“Head First 設計模式“ :觀察者模式

UML圖:

“Head First 設計模式“ :觀察者模式“Head First 設計模式“ :觀察者模式


我們看一個列子

需求:Internet氣象站需求

描述:跟蹤氣象站的數據,有變化時更新WeatherData對象,并最新信息顯示在對應的顯示器上,如下:

“Head First 設計模式“ :觀察者模式


我們分析需求:

1. 一對多關系(不同的數據顯示在對應的布告板上,如:濕度,溫度等)。

2. 氣象數據有變化時更新最新值并顯示在布告板。

很適合觀察者模式來實現,最終實現的UML圖如下(代碼省略):

“Head First 設計模式“ :觀察者模式“Head First 設計模式“ :觀察者模式

JAVA內置支持觀察者模式

注意:JAVA內置支持觀察者模式,Subject是類不是接口,導致必須用繼承,java本身不支持多繼承,所以導致層次問題,不靈活。建議自己實現。

java.util.Observable(主題)

java.util.Observer(觀察者)

我們用內置方法實現上面的列子,類圖如下:

“Head First 設計模式“ :觀察者模式“Head First 設計模式“ :觀察者模式


總結;

觀察者模式的應用場景: 

1、 對一個對象狀態的更新,需要其他對象同步更新,而且其他對象的數量動態可變。 

2、 對象僅需要將自己的更新通知給其他對象而不需要知道其他對象的細節。


設計原則:為了交互對象之間的松耦合設計而努力。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蒙阴县| 富阳市| 合江县| 恭城| 石渠县| 红安县| 织金县| 仪征市| 渑池县| 武夷山市| 宣武区| 博湖县| 双城市| 麦盖提县| 彝良县| 阿拉善左旗| 凤翔县| 上虞市| 长葛市| 阳东县| 沾益县| 德令哈市| 洛隆县| 固阳县| 锡林浩特市| 天津市| 固安县| 涞水县| 江口县| 峨眉山市| 宁津县| 玛多县| 通江县| 枞阳县| 石柱| 新余市| 柯坪县| 通榆县| 象山县| 景洪市| 积石山|