實驗二觀察者模式與裝飾模式

實驗二觀察者模式與裝飾模式

ID:30879904

大小:178.50 KB

頁數(shù):8頁

時間:2019-01-04

實驗二觀察者模式與裝飾模式_第1頁
實驗二觀察者模式與裝飾模式_第2頁
實驗二觀察者模式與裝飾模式_第3頁
實驗二觀察者模式與裝飾模式_第4頁
實驗二觀察者模式與裝飾模式_第5頁
資源描述:

《實驗二觀察者模式與裝飾模式》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、實驗報告課程名稱java設(shè)計模式實驗項目觀察者模式與裝飾模式的應(yīng)用實驗儀器PC個人終端系別計算機(jī)學(xué)院專業(yè)軟件工程班級/學(xué)號軟工1302/2013011342學(xué)生姓名阮獅實驗日期2015-10-12成績指導(dǎo)教師張志華實驗二觀察者模式與裝飾模式的應(yīng)用一、實驗?zāi)康耐ㄟ^該實驗,理解觀察者模式和裝飾模式的意圖、結(jié)構(gòu),在軟件開發(fā)屮使用這些模式并進(jìn)行功能驗證。二、實驗內(nèi)容1.貓、狗與老鼠。假設(shè)貓是老鼠和狗的觀察目標(biāo),老鼠和狗是觀察者,貓叫老鼠跑,狗也跟著叫,使用觀察者模式描述該過程。2.我跟媽媽說:“媽媽,我和妹妹在院子里玩。飯做好了叫我們一聲。”請用觀察者模式設(shè)計一個模擬系統(tǒng)。

2、3.采用裝飾模式為圖書館中的項目(書或咅像盤)增加“可借”功能。使用Java語言設(shè)計一個模擬系統(tǒng)。4.自定義JButtono開發(fā)人員設(shè)計用戶接口時,通常需要更多有特色的控件,Decorator模式就提供了一個方法去創(chuàng)造或修改現(xiàn)有的UI控件。使用裝飾模式實現(xiàn)一個帶有對角線的按鈕。三、實驗步驟與要求1.對于以上題目要認(rèn)真分析和理解題意,在觀察者模式和裝飾模式題目中各選1個進(jìn)行編程,程序屮要求使用相應(yīng)的模式。2.上機(jī)錄入,使用JDK編譯器調(diào)試、運行、驗證程序。3?請指導(dǎo)教師審查程序和運行結(jié)果并評定成績;4.撰寫并上交實驗報告。四、實驗原理:在許多設(shè)計中,經(jīng)常涉及到多個對象

3、都對一個特殊對象中的數(shù)據(jù)變化感興趣,而且這多個對彖都希望跟蹤那個特殊對彖中的數(shù)據(jù)變化,此時可以采用觀察者模式。觀察者模式意圖:“定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個對彖的狀態(tài)發(fā)生變化時,所有依賴于它的對象都得到通知并被自動更新?!庇^察者模式的UML類圖:裝飾模式是動態(tài)地擴(kuò)展一個對象的功能,而不需要改變原始類代碼的一種成熟模式。裝飾模式意圖:“動態(tài)地給對象添加一些額外的職責(zé)。就功能來說裝飾模式相比生成子類更為靈活。”裝飾模式的UML類圖:五、上機(jī)報告內(nèi)容1、班級、學(xué)號、姓名、實驗完成日期;2、實驗題目;3、設(shè)計方案:給出你的設(shè)計方案,包括結(jié)構(gòu)類圖及相關(guān)說明;4、源

4、代碼:設(shè)計方案中各個類和接口的源代碼,包括測試主類的源代碼.5、測試數(shù)據(jù)及運行結(jié)果6、總結(jié):1)運用設(shè)計模式總結(jié):對所運用的設(shè)計模式的名稱,分類,意圖,結(jié)構(gòu),角色作用的總結(jié),所運用的面向?qū)ο笤O(shè)計原則。2)選擇一個題目進(jìn)行說明:如果不使用觀察者模式和裝飾模式,你能想到其他方法解決問題嗎,簡要描述你的方案,并和采用命令模式的方案做簡單比較。3)本次實驗遇到的問題、如何解決的;本次實驗的經(jīng)驗、體會、改進(jìn)設(shè)想等。六、實驗成績考核方法實驗成績由出勤、實驗完成情況以及實驗報告綜合評定??己顺煽儽壤峙?出勤占15%、實驗完成情況占50%、實驗報告占35%七、上機(jī)安排本實驗共需2

5、個學(xué)吋。觀察者模式Subject?javapublicinterfaceSubject{publicvoidaddObserver(Observero);publicvoiddeleteObserver(Observero);publicvoidnotifyObservers();}Observer.javapublicinterfaceObserver{publicvoidSayHi(StringheardMess);}Mouse.javapublicclassMouseimplementsObserver!publicSubjectsubject;publicM

6、ouse(Subjectsubject){this>subject=subject;subject?addObserver(this);}publicvoidSayHi(StringheardMess){System.out.printIn("我是觀察者一老鼠,吱吱吱,我跑了!=");}}Dog.javapublicclassDogimplementsObserver{publicSubjectsubject;publicDog(Subjectsubject){thiSeSubject=subject;subject?addObserver(this);}publi

7、cvoidSayHi(StringheardMess){System?out?printin(”我是觀察者一狗,犬吠;}}Cat.javaimportjava.util.ArrayList;publicclassCatimplementsSubject{Stringmess;booleanchanged;ArrayListanimalsList;publicCat(){animalsList二newArrayList();mess=”Hi”;changed=false;}publicvoidaddObserver(Obse

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。