欢迎来到天天文库
浏览记录
ID:48387573
大小:537.16 KB
页数:40页
时间:2019-10-14
《中南大学设计模式实验.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《软件体系结构》实验报告项目名称专业班级学号姓名实验成绩:批阅教师:设计模式实验二软件15012017年12月12S实验2设计模式实验一实验学时:4每组人数:1实验类型:3(1:基础性2:综合性3:设计性4:研究性)实验要求:1(1:必修2:选修3:其它)实验类别:3(1:基础2:专业基础3:专业4:其它)、实验目的1.熟练使用面向对彖设计原则对系统进行重构;2.熟练使用PowerDesigner和任意一种面向对象编程语言实现儿种常见的创建型设计模式和结构型设计模式,包括简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、适
2、配器模式、桥接模式和组合模式,理解每一种设计模式的模式动机,裳握模式结构,学习如何使用代码实现这些模式。二、实验内容1.在某图形库API中提供了多种矢量图模板,用户可以基于这些矢量图创建不同的显示图形,图形库设计人员设计的初始类图如下所示:CircleTriangleRectangle+init():void+setColor():void+fill():void+setSize():void+display():void+init():void+setColor():void+fill():void+setSize():vo
3、id+display():void+init():void+setColor():void+fill():void+setSize():void+display():void在该图形库中,每个图形类(如Circle>Triangle等)的inil()方法用于初始化所创建的图形,setColor。方法用于给图形设置边框颜色,fill()方法用于给图形设置填充颜色,setSize()方法用于设置图形的大小,display()方法用于显示图形。客户类(Client)在使用该图形库时发现存在如下问题:①由于在创建窗口时每次只需要使用图
4、形库川的一种图形,因此在更换图形时需要修改客八类源代码;①在图形库中增加并使用新的图形时需耍修改客户类源代码;②客户类在每次使用图形对象Z前需要先创建图形对象,有些图形的创建过程较为复杂,导致客户类代码冗长且难以维护。现需要根据面向对象设计原则对该系统进行重构,要求如下:①隔离图形的创建和使用,将图形的创建过程封装在专门的类中,客户类在使用图形时无须直接创建图形对象,甚至不需要关心具体图形类类名;②客户类能够方便地更换图形或使用新增图形,无须针对具体图形类编程,符合开闭原则。绘制重构Z后的类图并说明在重构过程屮所运用的面向对象
5、设计原则。1.在某RPG游戏中使用简单工厂模式创建游戏角色,该游戏可根据用户所选择的参数来创建不同的角色(Role),例如参数为“angel”时创建一个天使角色,参数为“hero”时创建一个英雄角色,参数为“witch”时创建一个女巫角色。绘制类图并使用Java语言编程模拟实现。2.现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器(ImageReader),如GIF图片读取器(GifReader)用于读取GIF格式的图片、JPG图片读取器(JpgReader)用于读取JPG格式的图片。图片
6、读取器对象通过图片读取器工厂ImageReaderFactory来创建,ImageReaderFactory是一个抽象类,用丁-定义创建图片读取器的工厂方法,其子类GifReaderFactory和JpgReaderFactory用于创建具体的图片读取器对象。使用工厂方法模式设计该程序,绘制类图并编程模拟实现。需充分考虑系统的灵活性和可扩展性。3.某系统为了改进数据库操作的性能,用户可以自定义数据库连接对象Connection和语句对象Statement,针对不同类型的数据库提供不同的连接对象和语句对象,例如提供Oracle或
7、MySQL专用连接类和语句类,而且用户可以通过配置文件等方式根据实际需要动态更换系统数据库。使用抽象工厂模式设计该系统,要求绘制对应的类图并使用Java语言编程模拟实现。4.使用单例模式的思想实现多例模式(Multiton),确保系统屮某个类的对象只能存在有限个,例如两个或三个,设计并编写代码实现一个多例类。5.使用单例模式设计一个多文档窗口(注:在JavaAWT/Swing开发屮可使用JDesktopPane和JIiHemalFrame来实现),要求在主窗体中某个内部子窗体只能实例化一次,即只能弹出一个相同的子窗体,如下图所
8、示,编程实现该功能。(注:用C#或C++实现类似功能也可以)1.现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(intf],int),已知类Quicksort的quickSoH(int[])方法实现了快速排序算法,类Binar
此文档下载收益归作者所有