




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、設計模式,觀察員模式,Keeping you Object in the know,2007年1.2月,2007-1.1-0.2,內(nèi)容大綱,問題示例定義實用相關(guān)模式,2007-1.1-0.2,問題內(nèi)容在氣象臺的數(shù)據(jù)發(fā)生變化的情況下,要求立即在顯示畫面更新,保證顯示內(nèi)容的擴展性。 氣溫、氣壓、大氣濕度、氣象臺、氣象臺提供的取得部分原代碼、最近天氣的新狀況的三種方法,在氣象數(shù)據(jù)變化時,對應的值被修正為最新的值,我們不必在意如何變化。 天氣數(shù)據(jù)變化時自動調(diào)用,修改此方法查詢密碼,調(diào)用顯示器提供的方法,更新顯示數(shù)據(jù)?,F(xiàn)在1、現(xiàn)在的天氣數(shù)據(jù)2、氣溫詳細3、天氣預報、2007-11-02、最EZ的實現(xiàn)方法
2、、public class WeatherData /種類的顯示內(nèi)容處理類privateconditionsdisplaycurrentonditionsdila privatestatistatcsdisplaystatistatcsdisplay privateporecastdisplayforecastdisplay publicalvoidmentschanged ()浮動時間=獲得時間浮動持久性=獲得持久性(); 浮動壓力=獲得壓力(); currentconditionsdisplay.update (臨時,保姆,新聞) statistatcsdisplay.update (臨時
3、,保姆,新聞) forecast display 的雙曲正切值。 的雙曲正切值。 完了,2007-11-02,訂閱報紙,有報紙的就訂閱吧。 郵遞員,報社,我要看報紙,發(fā)行,投遞,讀者,2007-11-02,取消訂閱,都是廣告! 我不看了! 我不想看!報社、讀者、觀察者Observer、被觀察者Subject、2007-11-02、觀察者模式定義、觀察者模式是行為模式,定義對象間的一對多的依存關(guān)系,在對象的狀態(tài)變化時,依存的所有對象2007-1.1-0.2,觀察者模型類圖,2007-1.1-0.2,天氣監(jiān)視系統(tǒng)設計,2007-1.1-0.2,Subject實現(xiàn),publclswarethedat
4、aimplementsssubjectprivatearraylistobserver 隱私浮動模板;專用浮動模板; 隱私浮動保持力; 隱私浮動壓力; publicweatherdata () observer=新陣列(); publicvoideregisterobserver (observero ) observers.add (o ),2007-11-02,主題實現(xiàn)(續(xù)),publicvoidmoremoveobserver (observero ) I if (I=0)對象移除(o )公共視頻對象服務器() for (inti=0; i observers.size (); I )觀
5、測器=(觀測器)觀測器. get (I )觀測器.更新(臨時、保真、預覽)公共視頻切換() n /other method,2007-11-02,觀察器實現(xiàn),publicsclustercontconditionsdisplayimplementsobserver,displayementpritityfloattemperat 隱私浮動保持力; 隱私主題權(quán)威數(shù)據(jù); publicccurrentonditionsdisplay (子對象數(shù)據(jù)) this.weather數(shù)據(jù)=weather數(shù)據(jù); 注冊器觀測器(this )公共void更新(浮動時間、浮動實體、浮動壓力) this.tempera
6、ture=temp; humidity=humidity; 顯示(); public void display() /*.*/,2007-11-02,已完成。 使用Observer模式,完成了數(shù)據(jù)變化和顯示系統(tǒng)的聯(lián)動。 實現(xiàn)了“減少耦合”的面向形象的設計原則。 在增加顯示種類的情況下,開發(fā)相應的Observer端,執(zhí)行時注冊即可。 在執(zhí)行中變更登錄關(guān)系,可以決定是否根據(jù)Subject數(shù)據(jù)的變化改變顯示狀態(tài)。 2007-11-02、Pull vs Push這兩種方式的優(yōu)劣是? 2007-11-02、云推送vs提取、云推送方式的特征:狀態(tài)變化時,一次向觀察者云推送所有數(shù)據(jù)。 觀察者不打開內(nèi)部數(shù)據(jù)接
7、口的原因是,當觀察者注冊了數(shù)據(jù)時,其總是接收數(shù)據(jù)。 拉動方式的特征:觀察者可以根據(jù)需要取得Subject提供的數(shù)據(jù)。 Subject必須允許數(shù)據(jù)檢索接口(getter )的觀察者根據(jù)自各兒的請求決定是否接收數(shù)據(jù)。、2007-11-02、Java中內(nèi)置的觀察器模式在Java.util包中包含最基本的觀察器接口和觀察器類,對于在Java中使用觀察器模式非常有用。 內(nèi)置于Java中的Observer與我們之前介紹的相似,但實現(xiàn)了很多基本功能,如注冊和通知觀察者等。 能夠通訊端口按壓或拉拽向觀察者發(fā)送數(shù)據(jù),使其更靈活地使用。2007-11-02,Java中內(nèi)置的Observer、java.util.O
8、bservable是類,而不是接口,實現(xiàn)向Observer添加、刪除和通知的方法,Subject繼承了類,狀態(tài)發(fā)生了變化為了通知觀察者,必須復蓋notifyObservers ()方法。 如果沒有殘奧表,則需要觀察者自身提取數(shù)據(jù)。 否則,調(diào)用notifyObservers(Object )方法將殘奧儀表對象傳遞給觀察者。 Java.util.Observer是一個接口,觀察者類實現(xiàn)該接口,主要是update(obs,arg )方法,實現(xiàn)獨特的功能。 2007-1.1-0.2,內(nèi)置于Java的Observer,2007-1.1-0.2,SetChanged ()? 私有布爾變更=false; v
9、oid設定變更()變更=true; 視頻服務器(對象組) if (變更) for (; 更改=失??; 角色:提高靈活性,使程序設計師可以選擇是否根據(jù)附加條件通知觀察者。Java中的Observer、2007-11-02、publicsswarethedataeextendobserverablepriveableprivatitationfloatstemperature、humidity、pr 通知對象(); publicvoidsetmessessment (浮動模板,浮動中心,浮動壓力) this.temperature=temperature; humidity=humidity; p
10、ressure=pressure; 測量變更(); publicationfloatgettemperature () . publicationfloatgethumidity () . publicationfloatgetpressure () .Observer實現(xiàn),2007-11-02, publicalconsclustralccurrentonditionsdisplayimplementsobserverobservable私有浮動模板,humidity; 公共連接顯示器(可觀測) this.observable=可觀測; observable.add observer (th
11、is )公共語音更新(observable OBS,object arg ) if (obsinstanceofweatherdata ) weatherdataweatherdath this.temperature=weather data.get temperature (); this.humidity=weather data.gethumidty (); 顯示();2007-11-02、內(nèi)置的Java觀察者問題,Observable是類,接口可以將受保護的集更改()與僅由繼承Java繼承的一個類結(jié)合起來進行擴展對于我們來說,如果能夠繼承Observable的話,就可以用它來極簡化我
12、的工作量。 否則,我們將實現(xiàn)自各兒的觀測模式,達到目的。2007-11-02,如JDK的觀察員模式、AWT的上通告通知反應歷程(Action )、voix ample () jbutton=new jbutton (ok ) button.addactionlistener (newoklistener (); 類ok監(jiān)聽者implementsactionrespublevoidactionperformed (actionevent e ) system.out.println (that sok.);Subject、當按鈕被喀嚦聲時通知上通告的觀察者、觀察者、actionPerformed方法是之前的update方法、200
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醫(yī)用高頻儀器設備項目發(fā)展計劃
- 小學1-6年級奧數(shù)題及答案每日一練
- 2025年血橙提取物化妝品項目發(fā)展計劃
- 2025年多功能抑塵車項目合作計劃書
- 父親的擁抱閱讀答案 父親讓我抱抱你 答案
- 消防設施檢測合同范本(2024版)
- 2025年絕緣材料:絕緣套管合作協(xié)議書
- 2025年全數(shù)字攝影測量系統(tǒng)合作協(xié)議書
- 教育法規(guī)執(zhí)行中的挑戰(zhàn)與對策
- 2025年P(guān)U系列水乳型聚氨酯皮革涂飾劑項目建議書
- 體育審計整改報告范文
- 2021年1月國家開放大學漢語言文學本科《外國文學專題》期末紙質(zhì)考試試題及答案
- 公司合伙人合同協(xié)議書模板7篇
- 煤矸石處置合同范本
- 中暑急救培訓課件
- 能源管理體系及節(jié)能知識培訓課件
- 《SOP編寫培訓》課件
- 《紡織工藝》課件
- 廚房規(guī)范參觀流程
- 2025年陜西漢中市略陽縣綠色循環(huán)經(jīng)濟產(chǎn)業(yè)園區(qū)管委會招聘筆試參考題庫附帶答案詳解
- 2025年中煤集團招聘筆試參考題庫含答案解析
評論
0/150
提交評論