版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院軟件體系結(jié)構(gòu)與設(shè)計(jì)模式作業(yè) ( 2016秋季學(xué)期)學(xué) 號(hào): 20144350101 班 級(jí): 軟件工程1班 姓 名: 劉讓洲 任課老師: 蔣良衛(wèi) 作業(yè)內(nèi)容: 創(chuàng)建型設(shè)計(jì)模式 日期: 2016 年 11 月 6 日1 簡(jiǎn)單工廠模式1.1 作業(yè)題目使用簡(jiǎn)單工廠模式模擬女媧(Nvwa)造人(Person),如果傳入?yún)?shù)M,則返回一個(gè)Man對(duì)象,如果傳入?yún)?shù)W。則返回一個(gè)對(duì)象Woman,用java語言實(shí)現(xiàn)該場(chǎng)景?,F(xiàn)在需要增加一個(gè)新的Robot類,如果傳入?yún)?shù)R,則返回一個(gè)Robot對(duì)象,對(duì)代碼進(jìn)行修改并注意女媧的變化。(1)繪制簡(jiǎn)單工廠模式結(jié)構(gòu)視圖;(2)請(qǐng)繪制該實(shí)例類圖,
2、并代碼實(shí)現(xiàn)。1.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)造我!"); 簡(jiǎn)單工廠類:lrz0101NvWapackage com.bluesky;public class lrz0101NvWa public lrz0101Person madeMan(String s) lrz0101Person person = null;
3、switch(s) case "M": person = 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:lrz0101Manpacka
4、ge com.bluesky;public class lrz0101Man extends lrz0101Person public void play() System.out.println("大家好,我是男人!我來自地球!"); 子類2:lrz0101Womanpackage com.bluesky;public class lrz0101Woman extends lrz0101Person public void play() System.out.println("大家好,我是女人!我來自水星!"); 子類2:lrz0101Robotpac
5、kage com.bluesky;public class lrz0101Robot extends lrz0101Person public void play() System.out.println("大家好,我是機(jī)器人!我來未知星球!"); 1.5 運(yùn)行結(jié)果2 工廠模式2.1 作業(yè)題目現(xiàn)需要設(shè)計(jì)一個(gè)程序來讀取多種不同類型的圖片格式,針對(duì)每一種圖片格式都設(shè)計(jì)一個(gè)圖片讀取器ImgReader,如gif圖片讀取器GifReader用于讀取gif格式的圖片,jpg圖片讀取器JPGReader用于讀取jpg格式的圖片。圖片讀取器對(duì)象通過圖片讀取器工廠ImgReaderFact
6、ory來創(chuàng)建。ImgReaderFactory是一個(gè)抽象類,用于定義創(chuàng)建圖片讀取器的工廠方法,其GifReaderFactory和JPGReaderFactory用于創(chuàng)建具體的圖片讀取器對(duì)象。使用工廠方法模式,實(shí)現(xiàn)該程序的設(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 lrz0101ImageReaderFactor
7、y productReaderFactory(String s) lrz0101ImageReaderFactory reader =null; if(s.equals("JPG") reader = new lrz0101JpgReaderFactory(); else if(s.equals("GIF") reader = new lrz0101GifReaderFactory(); else reader =new lrz0101ImageReaderFactory(); return reader; Jpg圖片讀取工廠類:lrz0101JpgRe
8、aderFactorypackage com.bluesky1;public class lrz0101JpgReaderFactory extends lrz0101ImageReaderFactorypublic lrz0101ImageReader productImageReader() lrz0101ImageReader iread = new lrz0101GifReader(); return iread; Gif圖片讀取工廠類:lrz0101JpgReaderFactorypackage com.bluesky1;public class lrz0101GifReaderFa
9、ctory extends lrz0101ImageReaderFactory public lrz0101ImageReader productImageReader() lrz0101ImageReader iread = new lrz0101GifReader(); return iread; 圖片讀取器類:lrz0101ImageReaderpackage com.bluesky1;public class lrz0101ImageReader public void readImage() Jpg圖片讀取器類:lrz0101JpgReader package com.bluesky
10、1;public class lrz0101JpgReader extends lrz0101ImageReaderpublic lrz0101ImageReader productImageReader() lrz0101ImageReader iread = new lrz0101JpgReader(); return iread; Gif圖片讀取器類:lrz0101GifReader package com.bluesky1;public class lrz0101GifReader extends lrz0101ImageReader public void readImage() S
11、ystem.out.println("Read GIF Image"); 測(cè)試類:Testpackage com.bluesky1;public class lrz0101Test public static void main(String args) lrz0101Test test = new lrz0101Test();lrz0101ImageReaderFactory irf = new lrz0101ImageReaderFactory();lrz0101ImageReaderFactory ir=ductReaderFactory("J
12、PG");lrz0101ImageReaderFactory ir1=ductReaderFactory("GIF");lrz0101ImageReaderFactory ir2=ductReaderFactory("PNG");piti(ir);piti(ir1);piti(ir2);public static void compiti(lrz0101ImageReaderFactory ir)if(ir instanceof lrz0101JpgReaderFactory )ir=(lrz0101JpgReade
13、rFactory)ir;lrz0101ImageReader ireader=(lrz0101JpgReaderFactory) ir).productImageReader();ireader.readImage();else if(ir instanceof lrz0101GifReaderFactory ) ir=(lrz0101GifReaderFactory)ir;lrz0101ImageReader ireader=(lrz0101GifReaderFactory) ir).productImageReader();ireader.readImage();elseSystem.ou
14、t.println("無法讀取該類型的圖片格式");2.5 運(yùn)行結(jié)果 3 抽象工廠模式3.1 作業(yè)題目某軟件公司要推出一款新的手機(jī)游戲軟件,該軟件支持IOS、Android和Windows Phone等多個(gè)智能手機(jī)操作系統(tǒng)平臺(tái),針對(duì)不同的手機(jī)操作系統(tǒng),該游戲軟件提供了不同的游戲操作控制類(OperatioinController)游戲界面控制類(InterfaceController),并提供的相應(yīng)的工廠類來封裝這些類的初始化過程。該軟件要求具有較好的擴(kuò)展性,以支持新的操作系統(tǒng)平臺(tái),為了滿足上述要求,試采用抽象工廠模式對(duì)其進(jìn)行設(shè)計(jì)。(1)繪制抽象工廠模式結(jié)構(gòu)視圖;(2)請(qǐng)繪
15、制該實(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 lrz0101GameUiController guic;public lrz0101GameController getGameCtroller()return gc;public lrz0101GameUiController getGameUiControl
16、ler()return guic;游戲控制父類:lrz0101GameControllerpackage com.bluesky4;public class lrz0101GameController public void play() System.out.println("游戲控制加載中。"); 游戲界面控制父類:lrz0101GameUiControllerpackage com.bluesky4;public class lrz0101GameUiController public void showUI() System.out.println("界面
17、加載中。"); IOS工廠類:lrz0101IosSystem package com.bluesky4;public class lrz0101IosSystem extends lrz0101OperatingSystempublic lrz0101GameController getGameCtroller() this.gc=new lrz0101IosGameController();return this.gc;public lrz0101GameUiController getGameUiController()this.guic=new lrz0101IosUiCon
18、troller();return this.guic;Android工廠類:lrz0101AndroidSystempackage com.bluesky4;public class lrz0101AndroidSystem extends lrz0101OperatingSystempublic lrz0101GameController getGameCtroller()this.gc=new lrz0101AndroidGameControlller();return this.gc;public lrz0101GameUiController getGameUiController()
19、this.guic=new lrz0101AndroidUiController();return this.guic;Windows工廠類:lrz0101WindowsSystem package com.bluesky4;public class lrz0101WindowsSystem extends lrz0101OperatingSystempublic lrz0101GameController getGameCtroller()this.gc=new lrz0101WindowsGameController();return this.gc;public lrz0101GameU
20、iController getGameUiController()this.guic=new lrz0101WindoswUiController();return this.guic;IOS游戲控制類: lrz0101IosGameController package com.bluesky4;public class lrz0101IosGameController extends lrz0101GameControllerpublic void play()System.out.println("IOS游戲控制加載中.");IOS游戲界面控制類:lrz0101IosU
21、iControllerpackage com.bluesky4;public class lrz0101IosUiController extends lrz0101GameUiControllerpublic void showUI()System.out.println("IOS游戲界面加載中.");public void p()System.out.println("Hello");Android游戲控制類:lrz0101AndroidGameControlllerpackage com.bluesky4;public class lrz0101A
22、ndroidGameControlller extends lrz0101GameControllerpublic void play()System.out.println("Android游戲控制加載中.");Android游戲界面控制類:lrz0101AndroidGameControlllerpackage com.bluesky4;public class lrz0101AndroidUiController extends lrz0101GameUiControllerpublic void showUI() System.out.println("A
23、ndroid游戲界面加載中."); Windows游戲控制類:lrz0101WindowsGameController package com.bluesky4;public class lrz0101WindowsGameController extends lrz0101GameControllerpublic void play()System.out.println("Windows游戲控制加載中.");Windows游戲界面控制類:lrz0101WindoswUiControllerpackage com.bluesky4;public class lr
24、z0101WindoswUiController extends lrz0101GameUiController public void showUI()System.out.println("Windows游戲界面加載中.");測(cè)試類:lrz0101Testpackage com.bluesky4;public class lrz0101Test public static void main(String args) lrz0101Test test= new lrz0101Test();lrz0101OperatingSystem ios = new lrz0101I
25、osSystem();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)lrz0101OperatingSystem
26、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è)視頻播放軟件,為了給用戶提供方便,該播放軟件提供了多種界面顯示模式,如完整模式、精簡(jiǎn)模式、記憶模式、網(wǎng)絡(luò)模式等。在不同的顯示模式下,主界面的組成元素有所差異,如在完整模式下將顯示菜單、播放列表、主窗口、控制條等,在精簡(jiǎn)模式下只顯
27、示主窗口和控制條,而在記憶模式下,將顯示主窗口、控制條、收藏列表等。試用建造者模式設(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;模式建造類:lrz0101ModelBulid
28、er 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 screen; 模式控制類:lrz0101Model
29、Controllerpackage 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.buildMenu(); mb.getScreen() ; r
30、eturn mb.getScreen(); 完整顯示類:lrz0101FullStylepackage com.bluesky3;public class lrz0101FullStyle extends lrz0101ModelBuliderpublic void buildMenu() screen.menu="菜單欄顯示"public void buildPlayList() screen.playList="播放列表顯示"public void buildMainWindow() screen.mainWindow="主窗口顯示&quo
31、t;public void buildControlBar() screen.controlBar="控制條顯示"簡(jiǎn)單模式類:lrz0101SimpleStylepackage com.bluesky3;public class lrz0101SimpleStyle extends lrz0101ModelBulider public void buildMenu() screen.menu="菜單欄不顯示"public void buildPlayList() screen.playList="播放列表不顯示"public void
32、 buildMainWindow() screen.mainWindow="主窗口顯示"public void buildControlBar() screen.controlBar="控制條顯示"記憶模式類:lrz0101MemotyStylepackage com.bluesky3;public class lrz0101MemotyStyle extends lrz0101ModelBulider public void buildMenu() screen.menu="菜單欄不顯示"public void buildPlayL
33、ist() screen.playList="播放列表顯示"public void buildMainWindow() screen.mainWindow="主窗口顯示"public void buildControlBar() screen.controlBar="控制條顯示"網(wǎng)絡(luò)模式類:lrz0101InternetStylepackage com.bluesky3;public class lrz0101InternetStyle extends lrz0101ModelBuliderpublic void buildMenu(
34、) screen.menu="菜單欄顯示"public void buildPlayList() screen.playList="播放列表不顯示"public void buildMainWindow() screen.mainWindow="主窗口顯示"public void buildControlBar() screen.controlBar="控制條顯示"測(cè)試類:lrz0101Testpackage com.bluesky3;public class lrz0101Test public static v
35、oid main(String args) lrz0101Test test = new lrz0101Test();lrz0101ModelController smc = new lrz0101ModelController() ; lrz0101ModelBulider mb= new lrz0101FullStyle(); /構(gòu)造完整模式界面 lrz0101ModelBulider mb1= new lrz0101SimpleStyle();/構(gòu)造簡(jiǎn)單模式lrz0101ModelBulider mb2= new lrz0101MemotyStyle();/構(gòu)造記憶模式lrz0101Mo
36、delBulider mb3= new lrz0101InternetStyle();/構(gòu)造網(wǎng)絡(luò)模式lrz0101MainScreen screen; smc.setModeBuilder(mb); screen = smc.construct() ; System.out.println("完整模式:"); test.display(screen); System.out.println(); smc.setModeBuilder(mb1); screen = smc.construct() ; System.out.println("簡(jiǎn)單模式:");
37、 test.display(screen); System.out.println(); smc.setModeBuilder(mb2); screen = smc.construct() ; System.out.println("記憶模式:"); test.display(screen); System.out.println(); smc.setModeBuilder(mb3); screen = smc.construct() ; System.out.println("網(wǎng)絡(luò)模式:"); test.display(screen); public
38、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)行結(jié)果5 原型模式5.1 作業(yè)題目某數(shù)據(jù)處理軟件需要增加一個(gè)圖表復(fù)制功能。在圖表對(duì)象(DataChart)中包含一個(gè)數(shù)據(jù)集對(duì)象(DataSet)。數(shù)據(jù)集對(duì)象用于封裝要顯示的數(shù)據(jù),用戶可以通過界面上的復(fù)制
39、按鈕將該圖表復(fù)制一份,復(fù)制后,即可得到新的圖表對(duì)象,然后可以修改新圖表的編號(hào)、顏色、數(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 color;public lrz0101Color(String color)this.color=color; 自我克隆類 :lrz0101Datachatpackage com.bluesky2
40、;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 class lrz0101Dataset public lrz0101Color color;public int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 管理的實(shí)踐讀書心得
- 宣傳保護(hù)眼睛的安全演講稿范文(34篇)
- 社區(qū)協(xié)會(huì)工作總結(jié)
- 六年級(jí)小學(xué)科學(xué)教學(xué)計(jì)劃
- 正規(guī)的貸款合同6篇
- 教育學(xué)原理陳理宣版第二章教育的產(chǎn)生與發(fā)展
- 化學(xué)說課課件教學(xué)課件
- 內(nèi)部審計(jì)管理辦法
- 公司三級(jí)安全培訓(xùn)試題含答案(A卷)
- 車間職工安全培訓(xùn)試題及答案【名校卷】
- 介入科診療指南(主體)
- 除數(shù)接近整十?dāng)?shù)的除法(四舍法試商)【全國一等獎(jiǎng)】
- 圖形的平移(教案)青島版(五四學(xué)制)四年級(jí)下冊(cè)數(shù)學(xué)
- 2023美妝護(hù)膚行業(yè)出海白皮書
- 腎內(nèi)科運(yùn)用PDCA循環(huán)法防止患者自殺
- 高血脂的治療及飲食
- 廚房工作人員制度
- 運(yùn)用PDCA循環(huán)泌尿外科專項(xiàng)改善-改良手術(shù)改善前列腺癌根治患者術(shù)后尿控功能品管圈QCC成果匯報(bào)
- 服裝廠各類生產(chǎn)機(jī)器設(shè)備作業(yè)指導(dǎo)書及使用維護(hù)
- 《核心素養(yǎng)視角下初中數(shù)學(xué)課堂“問題串”式教學(xué)策略研究》結(jié)題報(bào)告
- 魯科版小學(xué)英語五年級(jí)上冊(cè)Unit-5《Lesson-1-What-club-would-you-like-to-join》課件
評(píng)論
0/150
提交評(píng)論