亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

“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

长武县| 青神县| 甘谷县| 马尔康县| 宁夏| 蕉岭县| 鲁甸县| 佛学| 襄汾县| 永兴县| 新泰市| 宁都县| 镇江市| 阿鲁科尔沁旗| 南昌县| 大港区| 色达县| 常州市| 甘德县| 仙游县| 昔阳县| 永顺县| 台东县| 南澳县| 时尚| 广昌县| 麻江县| 永和县| 新蔡县| 新化县| 天等县| 资兴市| 岑溪市| 应城市| 祁阳县| 儋州市| 郸城县| 安吉县| 英吉沙县| 华坪县| 临沂市|