1 / 43 《软件体系结构》实验报告项目名称设计模式实验二专业班级软件工程 1307 班学号3901130721 姓名谭淇蔚实验成绩:批阅教师:2015 年 12 月 31 日2 / 43 实验 3 设计模式实验二实验学时:4 每组人数:1 实验类型:3 (1:基础性2:综合性3:设计性4:研究性)实验要求:1 (1:必修2:选修3:其它)实验类别:3 (1:基础2:专业基础3:专业4:其它)一、实验目的熟练使用PowerDesigner 和任意一种面向对象编程语言实现几种常见的行为型设计模式,包括职责链模式、 命令模式、 观察者模式和策略模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。二、实验内容1. 某企业的 SCM(Supply Chain Management,供应链管理 ) 系统中包含一个采购审批子系统。该企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5 万元以下 (不包括 5 万元)的采购单, 副董事长可以审批5 万元至 10 万元(不包括 10 万元)的采购单,董事长可以审批10 万元至 50 万元(不包括50 万元)的采购单,50 万元及以上的采购单就需要开董事会讨论决定。如下图所示:采购人员采购单主任副董事长董事长董事会金额< 5万元5万元≤金额< 10万元10万元≤金额< 50万元 金额≥ 50万元试使用职责链模式设计并模拟实现该系统。2. 房间中的开关是命令模式的一个实例,现用命令模式来模拟开关的功能,可控制对象包括电灯和电风扇,绘制相应的类图并编程模拟实现。3 / 43 3. 某软件公司欲开发一个基于Windows 平台的公告板系统。系统提供一个主菜单(Menu) ,在主菜单中包含了一些菜单项(MenuItem) ,可以通过Menu 类的 addMenuItem() 方法增加菜单项。菜单项的主要方法是click() ,每一个菜单项包含一个抽象命令类,具体命令类包括 OpenCommand(打开命令 ),CreateCommand(新建命令 ),EditCommand( 编辑命令 )等,命令类具有一个execute()方法,用于调用公告板系统界面类(BoardScreen)的 open()、create()、edit() 等方法。现使用命令模式设计该系统,使得MenuItem 类与 BoardScreen 类的耦合度降低,绘制类图并编程实现。4. 某实时在线股票软件需要提供如下功能:当股票购买者所购买的某支股票价格变化幅度达到 5%时,系统将自动发送通知(包括新价格)给购买该股票的所有股民。试使用观察者模式设计并实现该系统,要求绘制相...