1 / 20
文档名称:

设计模式实验五.doc

格式:doc   大小:1,002KB   页数:20页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

设计模式实验五.doc

上传人:mh900965 2017/5/16 文件大小:1002 KB

下载得到文件列表

设计模式实验五.doc

文档介绍

文档介绍:实验 5 结构型和行为型设计模式实验实验学时: 2 每组人数: 1 实验类型: 3(1 :基础性 2 :综合性 3 :设计性 4 :研究性) 实验要求: 1(1 :必修 2 :选修 3 :其它) 实验类别: 3(1 :基础 2 :专业基础 3 :专业 4 :其它) 一、实验目的熟练使用 PowerDesigne r 和任意一种面向对象编程语言实现几种常见的结构型和行为型设计模式, 包括代理模式、职责链模式和命令模式, 理解每一种设计模式的模式动机, 掌握模式结构,学****如何使用代码实现这些模式。二、实验内容 1. 在某应用软件中需要记录业务方法的调用日志,在不修改现有业务类的基础上为每一个类提供一个日志记录代理类, 在代理类中输出日志, 例如在业务方法 m ethod() 调用之前输出“方法 m ethod() 被调用, 调用时间为 201 4 -11-5 10:10:10 ”, 调用之后如果没有抛异常则输出“方法 m ethod() 调用成功”, 否则输出“方法 m ethod() 调用失败”。在代理类中调用真实业务类的业务方法,使用代理模式设计该日志记录模块的结构,绘制类图并编程模拟实现。 2. 某软件公司承接了某信息咨询公司的收费商务信息查询系统的开发任务,该系统的基本需求如下: (1) 在进行商务信息查询之前用户需要通过身份验证, 只有合法用户才能够使用该查询系统; (2) 在进行商务信息查询时系统需要记录查询日志,以便根据查询次数收取查询费用。该软件公司开发人员已完成了商务信息查询模块的开发任务, 现希望能够以一种松耦合的方式向原有系统增加身份验证和日志记录功能, 客户端代码可以无区别地对待原始的商务信息查询模块和增加新功能之后的商务信息查询模块, 而且可能在将来还要在该信息查询模块中增加一些新的功能。试使用代理模式设计并编程模拟实现该收费商务信息查询系统。【提示:使用保护代理和智能引用代理】 3. 某企业的 SCM( Supply C hain M anagement ,供应链管理) 系统中包含一个采购审批子系统。该企业的采购审批是分级进行的, 即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批 5 万元以下(不包括 5 万元)的采购单,副董事长可以审批 5 万元至 10 万元(不包括 10 万元)的采购单,董事长可以审批 10 万元至 50 万元(不包括 50 万元)的采购单, 50 万元及以上的采购单就需要开董事会讨论决定。如下图所示: 试使用职责链模式设计并实现该系统。 4. 某公司欲开发一个软件系统的在线文档帮助系统,用户可以在任何一个查询上下文中输入查询关键字, 如果当前查询环境下没有相关内容, 则系统会将查询按照一定的顺序转发给其他查询环境。基于上述需求,试采用职责链模式对该系统进行设计。 5. 房间中的开关就是命令模式的一个实例,现用命令模式来模拟开关的功能,可控制对象包括电灯和电风扇,绘制相应的类图并编程模拟实现。 6. 某软件公司欲开发一个基于 Windows 平台的公告板系统。系统提供一个主菜单(Menu) ,在主菜单中包含了一些菜单项(MenuItem) ,可以通过 Menu 类的 addMenuItem() 方法增加菜单项。菜单项的主要方法是 click() , 每一个菜单项包含一个抽象命令类, 具体命令类包括 mand( 打开命令), mand( 新建命令), mand( 编辑命令)等, 命令类具有一个 execute() 方法, 用于调用公告板系统界面类(BoardScreen) 的 open() 、 create() 、 edit() 等方法。现使用命令模式设计该系统,使得 MenuItem 类与 BoardScreen 类的耦合度降低,绘制类图并编程实现。三、实验要求 1. 结合实例,正确无误地绘制代理模式、职责链模式和命令模式的模式结构图; 2. 使用任意一种面向对象编程语言实现代理模式、职责链模式和命令模式实例,代码运行正确无误。四、实验步骤 1. 结合实例, 使用 PowerDesigner 绘制代理模式实例结构图并用面向对象编程语言实现该模式实例; 2. 结合实例, 使用 PowerDesigner 绘制代理模式实例结构图并用面向对象编程语言实现该模式实例; 3. 结合实例, 使用 PowerDesigner 绘制职责链模式实例结构图并用面向对象编程语言实现该模式实例; 4. 结合实例, 使用 PowerDesigner 绘制职责链模式实例结构图并用面向对象编程语言实现该模式实例; 5. 结合实例, 使用 PowerDesigner 绘制命令模式实例结构图并用面向对象编程语言实现该模式实例; 6. 结合实例, 使用 PowerDesigner 绘制命令模式实例结构图并