付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南华大学计算机科学与技术学院软件体系结构与设计模式作业(2016秋季学期)学号:20144350101班级:软件工程1班姓名:刘让洲任课老师:蒋良卫作业内容:创建型设计模式日期:2016年11—月_6—日
1简单工厂模式作业题目使用简单工厂模式模拟女娟(Nvw0造人(Person),如果传入参数M则返回一个Man对象,如果传入参数W则返回一个对象Woman用java语言实现该场景。现在需要增加一个新的Robot类,如果传入参数R,则返回一个Robot对象,对代码进行修改并注意女娟的变化。(1)绘制简单工厂模式结构视图;(2)请绘制该实例类图,并代码实现。所用模式结构视图实例类图实例实现代码公共类:lrz0101Personpackagecom.bluesky;publicclasslrz0101Person{publicvoidplay(){System.out.println(“我还是一坨泥巴,女娟还没有构造我!");简单工厂类:lrz0101NvWapackagecom.bluesky;s){;s){;女娟暂时没有造这publicclasslrz0101NvWa{publiclrz0101PersonmadeMan(String
lrz0101Personperson=nullswitch(s){case"M":person=newlrz0101Man();break;case"W":person=newlrz0101Woman();break;case"R":person=newlrz0101Robot();break;default:System.out.println("Sorry,种人的能力");person=newlrz0101Person();}returnperson;}}packagecom.bluesky;publicclasslrz0101Manextendslrz0101Person{publicclasslrz0101Manextendslrz0101Person{publicvoidlay(){System.out.println(“大家好,我是男人!我来自地球!publicvoidlay(){System.out.println(“大家好,我是男人!我来自地球!");子类2:lrz0101Womanextendslrz0101Person{packagecom.bluesky;extendslrz0101Person{publicclasslrz0101Womanpublicvoidplay(){System.out.println("System.out.println("大家好,我是女人!我来自水星!");子类2:lrz0101Robotextendslrz0101Person{packagecom.bluesky;extendslrz0101Person{publicclasslrz0101Robotpublicvoidplay(){System.out.println("大家好,我是机器人!我来未知System.out.println("大家好,我是机器人!我来未知星球!");运行结果@Javadoc凰Offchration曰8他品居<terminated>IrzOIOITert(JavaApplication]C:\Pn0grarYiFile?\Java\jre1.SJ_101\bin'javaw^Ke:2011&B下”:53:47)大冢4"我是男工!我来自他球!大冢忆我是女大!我来自水星!大家好,我是机器人!我来未知星球!Sorry,女竭暂时没有造这种人的能力我还是一坨泥巴,女娟还没有构苣我!作业题目现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器ImgReader,如gif图片读取器GifReader用于读取gif格式的图片,jpg图片读取器JPGReade用于读取jpg格式的图片。图片读取器对象通过图片读取器工厂ImgReaderFactory来创建。ImgReaderFactory是——个抽象类,用于定义创建图片读取器的工厂方法,其GifReaderFactory和JPGReaderFactory用于创建具体的图片读取器对象。使用工厂方法模式,实现该程序的设计。(1)绘制工厂模式结构视图(2)给出实例类图并实现代码。所用模式结构视图实例类图实例实现代码图片读取工厂类:lrz0101ImageReaderFactorypackagecom.blueskyl;publicclasslrz0101ImageReaderFactory{publiclrz0101ImageReaderFactoryproductReaderFactory(Strings){lrz0101ImageReaderFactoryreader=nullif(s.equals("JPG")){reader=newlrz0101JpgReaderFactory();}readerelseif(s.equals("GIF")){readernewlrz0101GifReaderFactory();else{reader=newlrz0101ImageReaderFactory();returnreader;Jpg图片读取工厂类:lrz0101JpgReaderFactoryextendspackagecom.bluesky1;extendspublicclasslrz0101JpgReaderFactorylrz0101ImageReaderFactory{publiclrz0101ImageReaderproductImageReader(){lrz0101ImageReaderireadnewlrz0101ImageReaderireadnewlrz0101GifReader();returniread;Gif图片读取工厂类:lrz0101JpgReaderFactoryGifextendspackagecom.bluesky1;extendspublicclasslrz0101GifReaderFactorypubliclrz0101ImageReaderproductImageReader(){lrz0101ImageReaderireadnewlrz0101ImageReaderireadnewlrz0101GifReader();returniread;}}图片读取器类:lrz0101ImageReaderpackagecom.bluesky1;publicclasslrz0101ImageReader{publicvoidreadImage(){}Jpg图片读取器类:lrz0101JpgReaderextendspackagecom.bluesky1;extendspublicclasslrz0101JpgReaderlrz0101ImageReader{publiclrz0101ImageReaderproductImageReader(){lrz0101ImageReaderireadnewlrz0101ImageReaderireadnewlrz0101JpgReader();)Gif图片读取器类:lrz0101GifReaderpackagecom.blueskyl;publicclasslrz0101GifReaderextendslrz0101ImageReader{publicvoidreadImage(){System.out.println("ReadGIFImage");))测试类:Testpackagecom.bluesky1;publicclasslrz0101Test{rz0101Testlrz0101Test();irf=newpublicstaticvoidmain(String口rz0101Testlrz0101Test();irf=newlrz0101ImageReaderFactorylrz0101ImageReaderFactory();lrz0101ImageReaderFactory"JPG");"GIF"ir=ductReaderFactory("JPG");"GIF"lrz0101ImageReaderFactoryir1=ductReaderFactory(lrz0101ImageReaderFactoryir2=ductReaderFactory("PNG");piti(ir);piti(ir1工piti(ir2);)publicstaticvoidcompiti(lrz0101ImageReaderFactoryir){if(irinstanceoflrz0101JpgReaderFactory){ir=(lrz0101JpgReaderFactory)ir;lrz0101ImageReaderireader=((lrz0101JpgReaderFactory)ir).productImageReader();ireader.readImage();}elseif(irinstanceoflrz0101GifReaderFactory){ir=(lrz0101GifReaderFactory)ir;lrz0101ImageReaderireader=((lrz0101GifReaderFactory)ir).productImageReader();ireader.readImage();}else{System.out.println("无法读取该类型的图片格式");}}}运行结果(JavadocgDeclaration@Console鼠■X*|篁(j<termina!tied>rzQIDITest(1)[JavaApplication]CiVrcgrarnFiles'Jav3\jne1,8.0_101^bin\javaw.eie详11月7E上午12:02:19)ReadJPGImageReadGIFImage无法读取该类型的图片格式3抽象工厂模式作业题目某软件公司要推出一款新的手机游戏软件,该软件支持IOS、AndroidWWindowsPhone等多个智能手机操作系统平台,针对不同的手机操作系统,该游戏软件提供了不同的游戏操作控制类(OperatioinController)游戏界面控制类(Interfacecontroller),并提供的相应的工厂类来封装这些类的初始化过程。该软件要求具有较好的扩展性,以支持新的操作系统平台,为了满足上述要求,试采用抽象工厂模式对其进行设计。(1)绘制抽象工厂模式结构视图;(2)请绘制该实例类图,并代码实现。所用模式结构视图实例类图实例实现代码操作系统父类:lrz0101OperatingSystempackagecom.bluesky4;publicclasslrz0101OperatingSystem{publiclrz0101GameControllergc;publiclrz0101GameUiControllerguic;publiclrz0101GameControllergetGameCtroller(){returngc;}publiclrz0101GameUiControllergetGameUiController(){returnguic;游戏控制父类:lrz0101GameControllerpackagecom.bluesky4;publicclasslrz0101GameController{publicvoidplay(){System.out.println("游戏控制加载中。。。。。。");))游戏界面控制父类:lrz0101GameUiControllerpackagecom.bluesky4;publicclasslrz0101GameUiController{publicvoidshowUI(){System.out.println("界面加载中。。。。。。。“);))IOS工厂类:lrz0101IosSystemextendspackagecom.bluesky4;extendspublicclasslrz0101IosSystemlrz0101OperatingSystem{publiclrz0101GameControllergetGameCtroller(){this.gc=newlrz0101IosGameController();returnthis.gc;publiclrz0101GameUiControllergetGameUiController(){this.guic=newlrz0101IosUiController();returnthis.guic;}Android工厂类:lrz0101AndroidSystemextendspackagecom.bluesky4;extendspublicclasslrz0101AndroidSystemlrz0101OperatingSystem{publiclrz0101GameControllergetGameCtroller(){this.gc=newlrz0101AndroidGameControlller();returnthis.gc;publiclrz0101GameUiControllergetGameUiController(){this.guic=newlrz0101AndroidUiController();returnthis.guic;}}Windows工厂类:lrz0101WindowsSystempackagecom.bluesky4;publicclasslrz0101WindowsSystemextendslrz0101OperatingSystem{publiclrz0101GameControllergetGameCtroller(){this.gc=newlrz0101WindowsGameController();returnthis.gc;publiclrz0101GameUiControllergetGameUiController(){this.guic=newlrz0101WindoswUiController();returnthis.guic;
IOS游戏控制类:lrz0101IosGameControllerpackagecom.bluesky4;publicclasslrz0101IosGameControllerextendslrz0101GameController{publicvoidplay(){System.out.println("IOS游戏控制加载中");}}IOS游戏界面控制类:lrz0101IosUiControllerpackagecom.bluesky4;publicclasslrz0101IosUiControllerextendslrz0101GameUiController{publicvoidshowUI(){System.out.println("IOS游戏界面加载中");}publicvoidp(){System.out.println("Hello"System.out.println("Hello");)Android游戏控制类:lrz0101AndroidGameControlllerpackagecom.bluesky4;publicclasslrz0101AndroidGameControlllerextendslrz0101GameController{publicvoidplay(){System.out.println("Android游戏控制加载中......");))Android游戏界面控制类:lrz0101AndroidGameControlllerpackagecom.bluesky4;publicclasslrz0101AndroidUiControllerextendslrz0101GameUiController{publicvoidshowUI(){System.out.println("Android游戏界面加载中......");))Windows游戏控制类:lrz0101WindowsGameControllerpackagecom.bluesky4;
publicclasslrz0101WindowsGameControllerextendslrz0101GameController{extendspublicvoidplay(){System.out.println("Windows游戏控制加载中……");}Windows游戏界面控制类:lrz0101WindoswUiControllerpackagecom.bluesky4;publicclasslrz0101WindoswUiControllerextendslrz0101GameUiController{publicvoidshowUI(){System.out.println("Windows游戏界面加载中……");}}测试类:lrz0101Testpackagecom.bluesky4;publicclasslrz0101Test{publicstaticvoidmain(String[]args){publicstaticvoidmain(String[]args){lrz0101Testtest=newlrz0101Test();lrz0101OperatingSystemios=newlrz0101OperatingSystemios=newlrz0101IosSystem();lrz0101OperatingSystemandroid=newlrz0101AndroidSystem();lrz0101OperatingSystemwindows=newlrz0101WindowsSystem();test.show(ios);System.out.println();test.show(android工System.out.println();publicstatictest.show(windows工publicstaticvoidshow(lrz0101OperatingSystemios){lrz0101OperatingSystemos;lrz0101GameControlleriosgc;lrz0101GameUiControlleriosuiciosgc=ios.getGameCtroller();iosuic=ios.getGameUiController();iosgc.play();iosuic.showUI();运行结果®JavidocD«laration□CenseIt@X%<terminated>IrzOlOlTest(4)JJavaApplication]C:\PrograiTi用="曰"已中3,以0.101\日四已归科£:<5[2016^11月8日下午2:38:46]IOS滞戏控制加载中:工OS海戏界面加载申Android游戏控制加载中Android游戏界面加栽中Windows漪戏控制加戟申windows游戏界面加载申4建造者模式作业题目某软件公司要开发一个视频播放软件,为了给用户提供方便,该播放软件提供了多种界面显示模式,如完整模式、精简模式、记忆模式、网络模式等。在不同的显示模式下,主界面的组成元素有所差异,如在完整模式下将显示菜单、播放列表、主窗口、控制条等,在精简模式下只显示主窗口和控制条,而在记忆模式下,将显示主窗口、控制条、收藏列表等。试用建造者模式设计软件。(1)给出建造者模式等结构视图(2)给出该实例等类图及代码实现所用模式结构视图实例类图实例实现代码主窗口类:lrz0101MainScreenpackagecom.bluesky3;publicclasslrz0101MainScreen{publicStringmenu;publicStringplayList;publicStringmainWindow;publicStringcontrolBar;}模式建造类:lrz0101ModelBuliderpackagecom.bluesky3;
publicclasslrz0101ModelBulider{newprotectedlrz0101MainScreenscreenlrz0101MainScreen();newpublicvoidbuildMenu(){}publicvoidbuildPlayList(){}publicvoidbuildMainWindow(){}publicvoidbuildControlBar(){}publiclrz0101MainScreengetScreen(){returnscreen;}}模式控制类:lrz0101ModelControllerpackagecom.bluesky3;mb;publicclasslrz0101ModelController{mb;privatelrz0101ModelBuliderpublicvoidsetModeBuilder(lrz0101ModelBulidermb){this.mb=mb;}publiclrz0101MainScreenconstruct(){mhbuildControlBar();mb.buildMainWindow();mhbuildPlayList();mhbuildMenu();mhgetScreen();returnmb.getScreen();}}完整显示类:lrz0101FullStylepackagecom.bluesky3;publicclasslrz0101FullStyleextendspublicvoidbuildMenu(){screen.menu="菜单栏显示";)publicvoidbuildPlayList(){screen.playList="播放歹U表显示)publicvoidbuildMainWindow(){screen.mainWindow="主窗口显示)publicvoidbuildControlBar(){screen.controlBar="控制条显示))简单模式类:lrz0101SimpleStylepackagecom.bluesky3;
extendspublicclasslrz0101SimpleStylelrz0101ModelBulider{extendspublicvoidbuildMenu(){screen.menu="菜单栏不显示“;}publicvoidbuildPlayList(){screen.playList="播放歹U表不显示}publicvoidbuildMainWindow(){screen.mainWindow="主窗口显示“}publicvoidbuildControlBar(){screen.controlBar="控制条显示记忆模式类:lrz0101MemotyStylepackagecom.bluesky3;extendspublicclasslrz0101MemotyStyleextendslrz0101ModelBulider{publicvoidbuildMenu(){screen.menu="菜单栏不显示“;}publicvoidbuildPlayList(){screen.playList="播放歹U表显示}publicvoidbuildMainWindow(){screen.mainWindow="主窗口显示}publicvoidbuildControlBar(){screen.controlBar="控制条显示网络模式类:lrz0101InternetStylepackagecom.bluesky3;extendspublicclasslrz0101InternetStyleextendslrz0101ModelBulider{publicvoidbuildMenu(){screen.menu="菜单栏显示";)publicvoidbuildPlayList(){screen.playList="播放歹U表不显示)publicvoidbuildMainWindow(){screen.mainWindow="主窗口显示“)publicvoidbuildControlBar(){screen.controlBar="控制条显示
)测试类:lrz0101Testpackagecom.bluesky3;publicclasslrz0101Test{publicstaticvoidmain(String口args){lrz0101Testtest=lrz0101ModelControllerlrz0101ModelController();lrz0101ModelBulider//构造完整模式界面lrz0101ModelBuliderlrz0101SimpleStyle();//lrz0101ModelBuliderlrz0101MemotyStyle();//lrz0101ModelBuliderlrz0101InternetStyle();newlrz0101Test();smc=newmb=newlrz0101FullStyle()mb1=new构造简单模式mb2=new构造记忆模式mb3=new//构造网络模式lrz0101MainScreenscreensmc.setModeBuilder(mb);screen=smc.construct();System.out.println("完整模式:”);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.setModeBuilder(mb3);screen=smc.construct();System.out.println("网络模式:");test.display(screen);
publicstaticvoiddisplay(lrz0101MainScreenpublicstaticscreen){System.out.println(System.out.println(System.out.println(System.out.println(screen.menu);screen.playList);screen.mainWindow)screen.controlBar)4.5screen.menu);screen.playList);screen.mainWindow)screen.controlBar)应Javjd&C电DeckrationSConsole眼xterrninatedxIrzOlOlT&st(3)[JavaApplication]C:\ProgramFilesVava\jr&101\bin\jiavaw^se(2016^11月7日~F午2:54:43)虎整模式:菜单栏显示播放列表显示主窗口显示控制条显示简单模式:菜单栏不显示播放列表不显示主窗口显示控制裁显示记杞模式:菜单栏不显示播放列表显示主窗口显示控制条显示网络模式:菜单栏显示搐放列表不显示主窗口显示控制条显示5原型模式作业题目某数据处理软件需要增加一个图表复制功能。在图表对象(DataChart)中包含一个数据集对象(DataSet)。数据集对象用于封装要显示的数据,用户可以通过界面上的复制按钮将该图表复制一份,复制后,即可得到新的图表对象,然后可以修改新图表的编号、颜色、数据。试用原型模式设计软件实现深克隆。(1)给出原型模式等结构视图(2)给出该实例等类图及代码实现所用模式结构视图实例类图实例实现代码颜色类:lrz0101Colorpackagecom.bluesky2;publicclasslrz0101Color{publicStringcolor;publiclrz0101Color(Stringcolor){this.color=color;}}自我克隆类:lrz0101Datachatpackagecom.bluesky2;publicclasslrz0101Datachat{publiclrz0101Datasetdataset;dataset.no=this.dataset.no;dataset.color=this.dataset.colordataset.data=this.dataset.data;}}自我克隆需要新创建的类:lrz0101Datasetpackagecom.bluesky2;publicclasslrz0101Dataset{publiclrz0101Colorcolor;publicintno;publicStringdata;publiclrz0101Dataset(){},intpubliclrz0101Dataset(lrz0101Colo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 品牌声誉风险预警与处理
- 京东专利代理岗位的职责与要求
- 新媒体运营工作日常及技能提升手册
- 难以置信的演讲稿
- 2026年全球科技发展趋势解析试卷
- 2025年AI营销数据分析培训体系构建与实施
- 外国毕业典礼帅哥演讲稿
- 节约用水幼儿演讲稿
- 关于被尊重的需要演讲稿
- 中国正能量校长演讲稿
- T/CGCC 7-2017焙烤食品用糖浆
- 幕墙施工策划书
- 建筑工程英语英汉对照工程词汇
- 三体系内审检查表(全部门)
- 诊所转兑合同协议
- 2024年中小学教师资格考试复习资料
- 人教A版高一数学必修第二册第六章《平面向量及其应用》单元练习题卷含答案解析
- 重庆时时人工计划软件
- 【校园安全】中小学危化品管理“五双制度”
- 纸板纸箱基础知识
- 《成为卓越的导师》课件
评论
0/150
提交评论