版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院軟件體系結(jié)構(gòu)與設(shè)計(jì)模式作業(yè) ( 2016秋季學(xué)期)學(xué) 號: 班 級: 軟件工程1班 姓 名: 劉讓洲 任課老師: 蔣良衛(wèi) 作業(yè)內(nèi)容: 創(chuàng)建型設(shè)計(jì)模式 日期: 2016 年 11 月 6 日1 簡單工廠模式1.1 作業(yè)題目使用簡單工廠模式模擬女媧(Nvwa)造人(Person),如果傳入?yún)?shù)M,則返回一個(gè)Man對象,如果傳入?yún)?shù)W。則返回一個(gè)對象Woman,用java語言實(shí)現(xiàn)該場景?,F(xiàn)在需要增加一個(gè)新的Robot類,如果傳入?yún)?shù)R,則返回一個(gè)Robot對象,對代碼進(jìn)行修改并注意女媧的變化。(1)繪制簡單工廠模式結(jié)構(gòu)視圖;(2)請繪制該實(shí)例類圖,并代碼實(shí)現(xiàn)。1.2 所用
2、模式結(jié)構(gòu)視圖1.3 實(shí)例類圖1.4 實(shí)例實(shí)現(xiàn)代碼公共類:lrz0101Personpackage com.bluesky;public class lrz0101Person public void play() System.out.println(我還是一坨泥巴,女媧還沒有構(gòu)造我!); 簡單工廠類:lrz0101NvWapackage com.bluesky;public class lrz0101NvWa public lrz0101Person madeMan(String s) lrz0101Person person = null; switch(s) case M: person
3、 = new lrz0101Man(); break; case W: person = new lrz0101Woman(); break; case R: person = new lrz0101Robot(); break; default: System.out.println(Sorry,女媧暫時(shí)沒有造這種人的能力); person=new lrz0101Person(); return person; 子類1:lrz0101Manpackage com.bluesky;public class lrz0101Man extends lrz0101Person public void
4、 play() System.out.println(大家好,我是男人!我來自地球!); 子類2:lrz0101Womanpackage com.bluesky;public class lrz0101Woman extends lrz0101Person public void play() System.out.println(大家好,我是女人!我來自水星!); 子類2:lrz0101Robotpackage com.bluesky;public class lrz0101Robot extends lrz0101Person public void play() System.out.p
5、rintln(大家好,我是機(jī)器人!我來未知星球!); 1.5 運(yùn)行結(jié)果2 工廠模式2.1 作業(yè)題目現(xiàn)需要設(shè)計(jì)一個(gè)程序來讀取多種不同類型的圖片格式,針對每一種圖片格式都設(shè)計(jì)一個(gè)圖片讀取器ImgReader,如gif圖片讀取器GifReader用于讀取gif格式的圖片,jpg圖片讀取器JPGReader用于讀取jpg格式的圖片。圖片讀取器對象通過圖片讀取器工廠ImgReaderFactory來創(chuàng)建。ImgReaderFactory是一個(gè)抽象類,用于定義創(chuàng)建圖片讀取器的工廠方法,其GifReaderFactory和JPGReaderFactory用于創(chuàng)建具體的圖片讀取器對象。使用工廠方法模式,實(shí)現(xiàn)該
6、程序的設(shè)計(jì)。 (1) 繪制工廠模式結(jié)構(gòu)視圖(2) 給出實(shí)例類圖并實(shí)現(xiàn)代碼。2.2 所用模式結(jié)構(gòu)視圖2.3 實(shí)例類圖2.4 實(shí)例實(shí)現(xiàn)代碼圖片讀取工廠類:lrz0101ImageReaderFactory package com.bluesky1;public class lrz0101ImageReaderFactory public lrz0101ImageReaderFactory productReaderFactory(String s) lrz0101ImageReaderFactory reader =null; if(s.equals(JPG) reader = new lrz01
7、01JpgReaderFactory(); else if(s.equals(GIF) reader = new lrz0101GifReaderFactory(); else reader =new lrz0101ImageReaderFactory(); return reader; Jpg圖片讀取工廠類:lrz0101JpgReaderFactorypackage com.bluesky1;public class lrz0101JpgReaderFactory extends lrz0101ImageReaderFactorypublic lrz0101ImageReader prod
8、uctImageReader() lrz0101ImageReader iread = new lrz0101GifReader(); return iread; Gif圖片讀取工廠類:lrz0101JpgReaderFactorypackage com.bluesky1;public class lrz0101GifReaderFactory extends lrz0101ImageReaderFactory public lrz0101ImageReader productImageReader() lrz0101ImageReader iread = new lrz0101GifRead
9、er(); return iread; 圖片讀取器類:lrz0101ImageReaderpackage com.bluesky1;public class lrz0101ImageReader public void readImage() Jpg圖片讀取器類:lrz0101JpgReader package com.bluesky1;public class lrz0101JpgReader extends lrz0101ImageReaderpublic lrz0101ImageReader productImageReader() lrz0101ImageReader iread =
10、new lrz0101JpgReader(); return iread; Gif圖片讀取器類:lrz0101GifReader package com.bluesky1;public class lrz0101GifReader extends lrz0101ImageReader public void readImage() System.out.println(Read GIF Image); 測試類:Testpackage com.bluesky1;public class lrz0101Test public static void main(String args) lrz010
11、1Test test = new lrz0101Test();lrz0101ImageReaderFactory irf = new lrz0101ImageReaderFactory();lrz0101ImageReaderFactory ir=ductReaderFactory(JPG);lrz0101ImageReaderFactory ir1=ductReaderFactory(GIF);lrz0101ImageReaderFactory ir2=ductReaderFactory(PNG);piti(ir);p
12、iti(ir1);piti(ir2);public static void compiti(lrz0101ImageReaderFactory ir)if(ir instanceof lrz0101JpgReaderFactory )ir=(lrz0101JpgReaderFactory)ir;lrz0101ImageReader ireader=(lrz0101JpgReaderFactory) ir).productImageReader();ireader.readImage();else if(ir instanceof lrz0101GifReaderFactory
13、) ir=(lrz0101GifReaderFactory)ir;lrz0101ImageReader ireader=(lrz0101GifReaderFactory) ir).productImageReader();ireader.readImage();elseSystem.out.println(無法讀取該類型的圖片格式);2.5 運(yùn)行結(jié)果 3 抽象工廠模式3.1 作業(yè)題目某軟件公司要推出一款新的手機(jī)游戲軟件,該軟件支持IOS、Android和Windows Phone等多個(gè)智能手機(jī)操作系統(tǒng)平臺(tái),針對不同的手機(jī)操作系統(tǒng),該游戲軟件提供了不同的游戲操作控制類(OperatioinCon
14、troller)游戲界面控制類(InterfaceController),并提供的相應(yīng)的工廠類來封裝這些類的初始化過程。該軟件要求具有較好的擴(kuò)展性,以支持新的操作系統(tǒng)平臺(tái),為了滿足上述要求,試采用抽象工廠模式對其進(jìn)行設(shè)計(jì)。(1)繪制抽象工廠模式結(jié)構(gòu)視圖;(2)請繪制該實(shí)例類圖,并代碼實(shí)現(xiàn)。3.2 所用模式結(jié)構(gòu)視圖3.3 實(shí)例類圖3.4 實(shí)例實(shí)現(xiàn)代碼操作系統(tǒng)父類:lrz0101OperatingSystempackage com.bluesky4;public class lrz0101OperatingSystem public lrz0101GameController gc;public
15、lrz0101GameUiController guic;public lrz0101GameController getGameCtroller()return gc;public lrz0101GameUiController getGameUiController()return guic;游戲控制父類:lrz0101GameControllerpackage com.bluesky4;public class lrz0101GameController public void play() System.out.println(游戲控制加載中。); 游戲界面控制父類:lrz0101Ga
16、meUiControllerpackage com.bluesky4;public class lrz0101GameUiController public void showUI() System.out.println(界面加載中。); IOS工廠類:lrz0101IosSystem package com.bluesky4;public class lrz0101IosSystem extends lrz0101OperatingSystempublic lrz0101GameController getGameCtroller() this.gc=new lrz0101IosGameC
17、ontroller();return this.gc;public lrz0101GameUiController getGameUiController()this.guic=new lrz0101IosUiController();return this.guic;Android工廠類:lrz0101AndroidSystempackage com.bluesky4;public class lrz0101AndroidSystem extends lrz0101OperatingSystempublic lrz0101GameController getGameCtroller()thi
18、s.gc=new lrz0101AndroidGameControlller();return this.gc;public lrz0101GameUiController getGameUiController()this.guic=new lrz0101AndroidUiController();return this.guic;Windows工廠類:lrz0101WindowsSystem package com.bluesky4;public class lrz0101WindowsSystem extends lrz0101OperatingSystempublic lrz0101G
19、ameController getGameCtroller()this.gc=new lrz0101WindowsGameController();return this.gc;public lrz0101GameUiController getGameUiController()this.guic=new lrz0101WindoswUiController();return this.guic;IOS游戲控制類: lrz0101IosGameController package com.bluesky4;public class lrz0101IosGameController exten
20、ds lrz0101GameControllerpublic void play()System.out.println(IOS游戲控制加載中.);IOS游戲界面控制類:lrz0101IosUiControllerpackage com.bluesky4;public class lrz0101IosUiController extends lrz0101GameUiControllerpublic void showUI()System.out.println(IOS游戲界面加載中.);public void p()System.out.println(Hello);Android游戲控制類
21、:lrz0101AndroidGameControlllerpackage com.bluesky4;public class lrz0101AndroidGameControlller extends lrz0101GameControllerpublic void play()System.out.println(Android游戲控制加載中.);Android游戲界面控制類:lrz0101AndroidGameControlllerpackage com.bluesky4;public class lrz0101AndroidUiController extends lrz0101Gam
22、eUiControllerpublic void showUI() System.out.println(Android游戲界面加載中.); Windows游戲控制類:lrz0101WindowsGameController package com.bluesky4;public class lrz0101WindowsGameController extends lrz0101GameControllerpublic void play()System.out.println(Windows游戲控制加載中.);Windows游戲界面控制類:lrz0101WindoswUiController
23、package com.bluesky4;public class lrz0101WindoswUiController extends lrz0101GameUiController public void showUI()System.out.println(Windows游戲界面加載中.);測試類:lrz0101Testpackage com.bluesky4;public class lrz0101Test public static void main(String args) lrz0101Test test= new lrz0101Test();lrz0101OperatingS
24、ystem ios = new lrz0101IosSystem();lrz0101OperatingSystem android = new lrz0101AndroidSystem();lrz0101OperatingSystem windows = new lrz0101WindowsSystem();test.show(ios);System.out.println();test.show(android);System.out.println();test.show(windows);public static void show(lrz0101OperatingSystem ios
25、)lrz0101OperatingSystem os; lrz0101GameController iosgc;lrz0101GameUiController iosuic;iosgc=ios.getGameCtroller();iosuic=ios.getGameUiController();iosgc.play();iosuic.showUI();3.5 運(yùn)行結(jié)果4 建造者模式4.1作業(yè)題目 某軟件公司要開發(fā)一個(gè)視頻播放軟件,為了給用戶提供方便,該播放軟件提供了多種界面顯示模式,如完整模式、精簡模式、記憶模式、網(wǎng)絡(luò)模式等。在不同的顯示模式下,主界面的組成元素有所差異,如在完整模式下將顯示菜
26、單、播放列表、主窗口、控制條等,在精簡模式下只顯示主窗口和控制條,而在記憶模式下,將顯示主窗口、控制條、收藏列表等。試用建造者模式設(shè)計(jì)軟件。(1) 給出建造者模式等結(jié)構(gòu)視圖(2)給出該實(shí)例等類圖及代碼實(shí)現(xiàn)4.2 所用模式結(jié)構(gòu)視圖4.3 實(shí)例類圖4.4 實(shí)例實(shí)現(xiàn)代碼主窗口類:lrz0101MainScreenpackage com.bluesky3;public class lrz0101MainScreen public String menu; public String playList; public String mainWindow; public String controlBar
27、;模式建造類:lrz0101ModelBulider package com.bluesky3; public class lrz0101ModelBulider protected lrz0101MainScreen screen = new lrz0101MainScreen();public void buildMenu()public void buildPlayList() public void buildMainWindow() public void buildControlBar() public lrz0101MainScreen getScreen() return sc
28、reen; 模式控制類:lrz0101ModelControllerpackage com.bluesky3;public class lrz0101ModelController private lrz0101ModelBulider mb; public void setModeBuilder(lrz0101ModelBulider mb ) this.mb = mb; public lrz0101MainScreen construct() mb.buildControlBar(); mb.buildMainWindow(); mb.buildPlayList(); mb.buildMe
29、nu(); mb.getScreen() ; return mb.getScreen(); 完整顯示類:lrz0101FullStylepackage com.bluesky3;public class lrz0101FullStyle extends lrz0101ModelBuliderpublic void buildMenu() screen.menu=菜單欄顯示;public void buildPlayList() screen.playList=播放列表顯示;public void buildMainWindow() screen.mainWindow=主窗口顯示;public
30、void buildControlBar() screen.controlBar=控制條顯示;簡單模式類:lrz0101SimpleStylepackage com.bluesky3;public class lrz0101SimpleStyle extends lrz0101ModelBulider public void buildMenu() screen.menu=菜單欄不顯示;public void buildPlayList() screen.playList=播放列表不顯示;public void buildMainWindow() screen.mainWindow=主窗口顯示
31、;public void buildControlBar() screen.controlBar=控制條顯示;記憶模式類:lrz0101MemotyStylepackage com.bluesky3;public class lrz0101MemotyStyle extends lrz0101ModelBulider public void buildMenu() screen.menu=菜單欄不顯示;public void buildPlayList() screen.playList=播放列表顯示;public void buildMainWindow() screen.mainWindo
32、w=主窗口顯示;public void buildControlBar() screen.controlBar=控制條顯示;網(wǎng)絡(luò)模式類:lrz0101InternetStylepackage com.bluesky3;public class lrz0101InternetStyle extends lrz0101ModelBuliderpublic void buildMenu() screen.menu=菜單欄顯示;public void buildPlayList() screen.playList=播放列表不顯示;public void buildMainWindow() screen
33、.mainWindow=主窗口顯示;public void buildControlBar() screen.controlBar=控制條顯示;測試類:lrz0101Testpackage com.bluesky3;public class lrz0101Test public static void main(String args) lrz0101Test test = new lrz0101Test();lrz0101ModelController smc = new lrz0101ModelController() ; lrz0101ModelBulider mb= new lrz01
34、01FullStyle(); /構(gòu)造完整模式界面 lrz0101ModelBulider mb1= new lrz0101SimpleStyle();/構(gòu)造簡單模式lrz0101ModelBulider mb2= new lrz0101MemotyStyle();/構(gòu)造記憶模式lrz0101ModelBulider mb3= new lrz0101InternetStyle();/構(gòu)造網(wǎng)絡(luò)模式lrz0101MainScreen screen; smc.setModeBuilder(mb); screen = smc.construct() ; System.out.println(完整模式:)
35、; test.display(screen); System.out.println(); smc.setModeBuilder(mb1); screen = smc.construct() ; System.out.println(簡單模式:); test.display(screen); System.out.println(); smc.setModeBuilder(mb2); screen = smc.construct() ; System.out.println(記憶模式:); test.display(screen); System.out.println(); smc.setM
36、odeBuilder(mb3); screen = smc.construct() ; System.out.println(網(wǎng)絡(luò)模式:); test.display(screen); public static void display(lrz0101MainScreen screen) System.out.println(screen.menu); System.out.println(screen.playList); System.out.println(screen.mainWindow); System.out.println(screen.controlBar); 4.5 運(yùn)行
37、結(jié)果5 原型模式5.1 作業(yè)題目某數(shù)據(jù)處理軟件需要增加一個(gè)圖表復(fù)制功能。在圖表對象(DataChart)中包含一個(gè)數(shù)據(jù)集對象(DataSet)。數(shù)據(jù)集對象用于封裝要顯示的數(shù)據(jù),用戶可以通過界面上的復(fù)制按鈕將該圖表復(fù)制一份,復(fù)制后,即可得到新的圖表對象,然后可以修改新圖表的編號、顏色、數(shù)據(jù)。試用原型模式設(shè)計(jì)軟件實(shí)現(xiàn)深克隆。(1) 給出原型模式等結(jié)構(gòu)視圖(2) 給出該實(shí)例等類圖及代碼實(shí)現(xiàn)5.2 所用模式結(jié)構(gòu)視圖5.3 實(shí)例類圖5.4 實(shí)例實(shí)現(xiàn)代碼 顏色類:lrz0101Colorpackage com.bluesky2;public class lrz0101Color public String
38、 color;public lrz0101Color(String color)this.color=color; 自我克隆類 :lrz0101Datachatpackage com.bluesky2;public class lrz0101Datachat public lrz0101Dataset dataset;public void deepClone(lrz0101Dataset dataset)dataset.no=this.dataset.no;dataset.color=this.dataset.color;dataset.data=this.dataset.data; 自我克隆需要新創(chuàng)建的類 :lrz0101Datasetpackage com.bluesky2;public
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026屆北京市朝陽區(qū)高三上學(xué)期期末質(zhì)量檢測歷史試題(含答案)
- 試驗(yàn)員鐵路考試題及答案
- 山西人證考試題庫及答案
- 氣車技師考試題目及答案
- 人教版地理八年級上學(xué)期期末質(zhì)量檢測(解析版)
- 湖南省婁底市雙峰縣2024-2025學(xué)年八年級上學(xué)期期末考試地理試題(含答案)
- 《GAT 1049.6-2013公安交通集成指揮平臺(tái)通信協(xié)議 第6部分:交通信息發(fā)布系統(tǒng)》專題研究報(bào)告
- 2026年深圳中考語文高頻考點(diǎn)精練試卷(附答案可下載)
- 2026年大學(xué)大二(機(jī)械設(shè)計(jì)制造及其自動(dòng)化)數(shù)控加工技術(shù)階段測試題及答案
- 創(chuàng)新科技技術(shù)介紹
- 地震預(yù)警科普講解
- 生活垃圾填埋場環(huán)境污染的排查與治理方案
- 教育培訓(xùn)市場的發(fā)展趨勢及機(jī)遇分析
- DB37-T 5318-2025 有機(jī)保溫板薄抹灰外墻外保溫系統(tǒng)應(yīng)用技術(shù)標(biāo)準(zhǔn)
- 2024數(shù)控機(jī)床主軸可靠性加速試驗(yàn)技術(shù)規(guī)范
- 質(zhì)量信得過班組培訓(xùn)課件
- 材料進(jìn)場檢驗(yàn)記錄表
- DL∕T 1768-2017 旋轉(zhuǎn)電機(jī)預(yù)防性試驗(yàn)規(guī)程
- 復(fù)方蒲公英注射液在銀屑病中的應(yīng)用研究
- 網(wǎng)絡(luò)直播創(chuàng)業(yè)計(jì)劃書
- 大學(xué)任課老師教學(xué)工作總結(jié)(3篇)
評論
0/150
提交評論