文档库 最新最全的文档下载
当前位置:文档库 › P2实验的二设计模式实验的一

P2实验的二设计模式实验的一

实验二设计模式实验一

一、实验目的

熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括简单工厂模式、工厂方法模式、抽象工厂模式、单例模式和适配器模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。

二、实验内容

使用PowerDesigner和任意一种面向对象编程语言实现简单工厂模式、工厂方法模式、抽象工厂模式、单例模式和适配器模式,包括根据实例绘制模式结构图、编写模式实例实现代码,运行并测试模式实例代码。

(1) 简单工厂模式

使用简单工厂模式设计一个可以创建不同几何形状(Shape)的绘图工具类,如可创建圆形(Circle)、方形(Rectangle)和三角形(Triangle) 对象,每个几何图形都要有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,提示一个UnsupportedShapeException,绘制类图并编程实现。

(2) 简单工厂模式

使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数“M”,则返回一个Man对象,如果传入参数“W”,则返回一个Woman对象,使用任意一种面向对象编程语言实现该场景。现需要增加一个新的Robot类,如果传入参数“R”,则返回一个Robot 对象,对代码进行修改并注意女娲的变化。

(3) 工厂方法模式

某系统日志记录器要求支持多种日志记录方式,如文件记录、数据库记录等,且用户可以根据要求动态选择日志记录方式,现使用工厂方法模式设计该系统。用代码实现日志记录器实例,如果在系统中增加一个中的日志记录方式——控制台日志记录(ConsoleLog),绘制类图并修改代码,注意增加新日志记录方式过程中原有代码的变化。

<>

FileLogFactory +createLog ()...

: Log LogFactory +createLog ()...

: Log

FileLog +writeLog ()...

: void Log

+writeLog ()...

: void DatabaseLogFactory +createLog ()...

: Log DatabaseLog +writeLog ()...

: void Client

(4) 工厂方法模式

现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器(ImageReader),如GIF 图片读取器(GifReader)用于读取GIF 格式的图片、JPG 图片读取器(JpgReader)用于读取JPG 格式的图片。图片读取器对象通过图片读取器工厂ImageReaderFactory 来创建,ImageReaderFactory 是一个抽象类,用于定义创建图片读取器的工厂方法,其子类GifReaderFactory 和JpgReaderFactory 用于创建具体的图片读取器对象。使用工厂方法模式实现该程序的设计。

(5) 抽象工厂模式

某系统为了改进数据库操作的性能,自定义数据库连接对象Connection 和语句对象

Statement,可针对不同类型的数据库提供不同的连接对象和语句对象,如提供Oracle或SQL Server专用连接类和语句类,而且用户可以通过配置文件等方式根据实际需要动态更换系统数据库。使用抽象工厂模式设计该系统。用代码模拟实现数据库操作工厂实例,要求可以通过配置文件改变数据库类型。

OracleConnection Connection

OracleFactory

+ +createConnection ()

createStatement ()

...

: Connection

: Statement

DBFactory

+

+

createConnection ()

createStatement ()

...

: Connection

: Statement

MySQLFactory

+

+

createConnection ()

createStatement ()

...

: Connection

: Statement

MySQLConnection

OracleStatement

Statement

MySQLStatement

(6) 抽象工厂模式

计算机包含内存(RAM)、CPU等硬件设备,根据下面的“产品等级结构-产品族”示意图,使用抽象工厂模式实现计算机设备创建过程并绘制相应的类图。

产品族

产品等级结构

一个产品族

Pc

Mac

CPU

RAM

PcCPU

MacCPU PcRAM

MacRAM

(7) 单例模式

使用单例模式的思想实现多例模式,确保系统中某个类的对象只能存在有限个,如两个或三个,设计并编写代码实现一个多例类。

(8) 单例模式

使用单例模式设计一个多文档窗口(注:在Java AWT/Swing 开发中可使用

JDesktopPane 和JInternalFrame 来实现),要求在主窗体中某个内部子窗体只能实例化一次,即只能弹出一个相同的子窗体,如下图所示:

(注:用C#或C++实现类似功能也可以)

(9) 适配器模式

现有一个接口DataOperation 定义了排序方法sort(int[]) 和查找方法search(int[],

相关文档
相关文档 最新文档