您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 南华大学软件设计模式实验
南华大学计算机科学与技术学院软件体系结构与设计模式作业(2016秋季学期)学号:20144350101班级:软件工程1班姓名:刘让洲任课老师:蒋良卫作业内容:创建型设计模式日期:2016年11月6日1简单工厂模式1.1作业题目使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W。则返回一个对象Woman,用java语言实现该场景。现在需要增加一个新的Robot类,如果传入参数R,则返回一个Robot对象,对代码进行修改并注意女娲的变化。(1)绘制简单工厂模式结构视图;(2)请绘制该实例类图,并代码实现。1.2所用模式结构视图1.3实例类图1.4实例实现代码公共类:lrz0101Personpackagecom.bluesky;publicclasslrz0101Person{publicvoidplay(){System.out.println(我还是一坨泥巴,女娲还没有构造我!);}}简单工厂类:lrz0101NvWapackagecom.bluesky;publicclasslrz0101NvWa{publiclrz0101PersonmadeMan(Strings){lrz0101Personperson=null;switch(s){caseM:person=newlrz0101Man();break;caseW:person=newlrz0101Woman();break;caseR:person=newlrz0101Robot();break;default:System.out.println(Sorry,女娲暂时没有造这种人的能力);person=newlrz0101Person();}returnperson;}}子类1:lrz0101Manpackagecom.bluesky;publicclasslrz0101Manextendslrz0101Person{publicvoidplay(){System.out.println(大家好,我是男人!我来自地球!);}}子类2:lrz0101Womanpackagecom.bluesky;publicclasslrz0101Womanextendslrz0101Person{publicvoidplay(){System.out.println(大家好,我是女人!我来自水星!);}}子类2:lrz0101Robotpackagecom.bluesky;publicclasslrz0101Robotextendslrz0101Person{publicvoidplay(){System.out.println(大家好,我是机器人!我来未知星球!);}}1.5运行结果2工厂模式2.1作业题目现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器ImgReader,如gif图片读取器GifReader用于读取gif格式的图片,jpg图片读取器JPGReader用于读取jpg格式的图片。图片读取器对象通过图片读取器工厂ImgReaderFactory来创建。ImgReaderFactory是一个抽象类,用于定义创建图片读取器的工厂方法,其GifReaderFactory和JPGReaderFactory用于创建具体的图片读取器对象。使用工厂方法模式,实现该程序的设计。(1)绘制工厂模式结构视图(2)给出实例类图并实现代码。2.2所用模式结构视图2.3实例类图2.4实例实现代码图片读取工厂类:lrz0101ImageReaderFactorypackagecom.bluesky1;publicclasslrz0101ImageReaderFactory{publiclrz0101ImageReaderFactoryproductReaderFactory(Strings){lrz0101ImageReaderFactoryreader=null;if(s.equals(JPG)){reader=newlrz0101JpgReaderFactory();}elseif(s.equals(GIF)){reader=newlrz0101GifReaderFactory();}else{reader=newlrz0101ImageReaderFactory();}returnreader;}}Jpg图片读取工厂类:lrz0101JpgReaderFactorypackagecom.bluesky1;publicclasslrz0101JpgReaderFactoryextendslrz0101ImageReaderFactory{publiclrz0101ImageReaderproductImageReader(){lrz0101ImageReaderiread=newlrz0101GifReader();returniread;}}Gif图片读取工厂类:lrz0101JpgReaderFactorypackagecom.bluesky1;publicclasslrz0101GifReaderFactoryextendslrz0101ImageReaderFactory{publiclrz0101ImageReaderproductImageReader(){lrz0101ImageReaderiread=newlrz0101GifReader();returniread;}}图片读取器类:lrz0101ImageReaderpackagecom.bluesky1;publicclasslrz0101ImageReader{publicvoidreadImage(){}}Jpg图片读取器类:lrz0101JpgReaderpackagecom.bluesky1;publicclasslrz0101JpgReaderextendslrz0101ImageReader{publiclrz0101ImageReaderproductImageReader(){lrz0101ImageReaderiread=newlrz0101JpgReader();returniread;}}Gif图片读取器类:lrz0101GifReaderpackagecom.bluesky1;publicclasslrz0101GifReaderextendslrz0101ImageReader{publicvoidreadImage(){System.out.println(ReadGIFImage);}}测试类:Testpackagecom.bluesky1;publicclasslrz0101Test{publicstaticvoidmain(String[]args){lrz0101Testtest=newlrz0101Test();lrz0101ImageReaderFactoryirf=newlrz0101ImageReaderFactory();lrz0101ImageReaderFactoryir=irf.productReaderFactory(JPG);lrz0101ImageReaderFactoryir1=irf.productReaderFactory(GIF);lrz0101ImageReaderFactoryir2=irf.productReaderFactory(PNG);test.compiti(ir);test.compiti(ir1);test.compiti(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(无法读取该类型的图片格式);}}}2.5运行结果3抽象工厂模式3.1作业题目某软件公司要推出一款新的手机游戏软件,该软件支持IOS、Android和WindowsPhone等多个智能手机操作系统平台,针对不同的手机操作系统,该游戏软件提供了不同的游戏操作控制类(OperatioinController)游戏界面控制类(InterfaceController),并提供的相应的工厂类来封装这些类的初始化过程。该软件要求具有较好的扩展性,以支持新的操作系统平台,为了满足上述要求,试采用抽象工厂模式对其进行设计。(1)绘制抽象工厂模式结构视图;(2)请绘制该实例类图,并代码实现。3.2所用模式结构视图3.3实例类图3.4实例实现代码操作系统父类:lrz0101OperatingSystempackagecom.bluesky4;publicclasslrz0101OperatingSystem{publiclrz0101GameControllergc;publiclrz0101GameUiControllerguic;publiclrz0101GameControllergetGameCtroller(){returngc;}publiclrz0101GameUiControllergetGameUiController(){returnguic;}}游戏控制父类:lrz0101GameControllerpackagecom.bluesky4;publicclasslrz0101GameController{publicvoidplay(){System.out.println(游戏控制加载中。。。。。。);}}游戏界面控制父类:lrz0101GameUiControllerpackagecom.bluesky4;publicclasslrz0101GameUiController{publicvoidshowUI(){System.out.println(界面加载中。。。。。。。);}}IOS工厂类:lrz0101IosSystempackagecom.bluesky4;publicclasslrz0101IosSystemextendslrz0101OperatingSystem{publiclrz0101GameControllergetGameCtroller(){this.gc=newlrz0101IosGameController();returnthis.gc;}publiclrz0101GameUiControllergetGameUiController(){this.guic=newlrz0101IosUiController();returnthis.guic;}}Android工厂类:lrz0101AndroidSystempackagecom.bluesky4;publicclasslrz0101AndroidSystemextendslrz0101OperatingSystem{publiclrz0101GameControllergetGameCtroller(){this.gc=newlrz0101AndroidGameControlller();returnthis.gc;}publiclrz0101GameUiControllergetGam
本文标题:南华大学软件设计模式实验
链接地址:https://www.777doc.com/doc-3524232 .html