实验内容:
1. 使用简单工厂模式设计一个可以创建不同几何形状(Shape),例如圆形
(Circle)、矩形(Rectangle)和三角形(Triangle)等的绘图工具类,每个几何图形均具
有绘制方法draw()和擦除方法erase(),要求在绘制不支持的几何图形时,抛出一
个UnsupportedShapeException 异常,绘制类图并编程模拟实现。
需提供简单工厂模式实例的结构图(类图)和模拟实现代码。【本题要求使
用配置文件来存储参数】
答(类图):
2. 在某网络管理软件中,需要为不同的网络协议提供不同的连接类,例如针
对POP3 协议的连接类POP3Connection 、针对IMAP 协议的连接类
IMAPConnection、针对HTTP 协议的连接类HTTPConnection 等。由于网络连接
对象的创建过程较为复杂,需要将其创建过程封装到专门的类中,该软件还将支
持更多类型的网络协议。
现采用工厂方法模式进行设计,绘制类图并编程模拟实现。需提供工厂方法
模式实例的结构图(类图)和模拟实现代码。
答(类图):
3. 现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格
式都设计一个图片读取器(ImageReader),如GIF 图片读取器(GifReader)用于读取
GIF 格式的图片、JPG 图片读取器(JpgReader)用于读取JPG 格式的图片。图片读
取器对象通过图片读取器工厂ImageReaderFactory 来创建,ImageReaderFactory
是一个抽象类,用于定义创建图片读取器的工厂方法,其子类GifReaderFactory
和JpgReaderFactory 用于创建具体的图片读取器对象。
现采用工厂方法模式进行设计,绘制类图并编程模拟实现。需提供工厂方法
模式实例的结构图(类图)和模拟实现代码。【本题要求使用配置文件和反射机
制实现】
答(类图):
4. 抽象工厂模式最早的应用之一是用来创建在不同操作系统的图形环境下
都能够运行的应用程序,比如同时支持Windows 与Linux 操作系统。在每一个
操作系统中,都有一个由图形构件组成的构件家族,可以通过一个抽象角色给出
功能定义,而由具体子类给出不同操作系统下的具体实现,例如系统中包含两个
产品等级结构,分别是Button 与Text;同时包含三个产品族:Unix 产品族、Linux
产品族与Windows 产品族,如图1 所示。
在图1 中,Windows 中的Button 和Text 构成了一个Windows 产品族,而不
同操作系统下的Button 构成了一个产品等级结构。试使用抽象工厂模式来设计
并模拟实现该结构。
答(类图):
在本题中,接口AbstractFactory 充当抽象工厂,其子类WindowsFactory、
UnixFactory 和LinuxFactory 充当具体工厂;Text 和Button 充当抽象产品,其子
类WindowsText、UnixText、LinuxText 和WindowsButton、UnixButton、LinuxButton
充当具体产品。
5. 在某FPS(First-Person Shooting Game,第一人称射击) 游戏中提供了多个
不同的游戏场景。在每一个游戏场景中,提供了对应的地图(Map)、天气(Weather)
和游戏背景音乐(Sound)等。
使用抽象工厂模式设计该系统,使得当用户选择游戏场景时,该场景所对应
的地图、天气和背景音乐能够同时出现;此外,还可以方便地在该游戏中增加新
的游戏场景。绘制类图并编程模拟实现。
答(类图):