一 选择题:
1. UpClean公司准备开发一套战略游戏系统。该系统中有很多战略角色(character),比如King、Queen、Troll、Knight等,每个战略角色可以发出各种攻击行为(weapon behavior),比如KnifeBehavior、BowBehavior、AxeBehavior、SwordBehavior等。该公司的架构师Jack希望每种攻击行为可以独立于各个战略角色,并且可以根据玩家的需要,由第三方公司进行开发扩充。那么为了将来能更方便地扩展该系统,请问Jack应采用那种设计模式。( )
(A)观察者模式 (B)策略模式:1对1问题,每次可以重设1种 (C)命令模式 (D)适配器模式
2.Forest软件公司用Java语言开发一套财务软件,现在想为其增加财务历史信息统计的功能,在功能中要求将历年来的费用、利润信息分别以柱状图、饼状图的形式显示出来。系统架构师Jack考虑到将来可能还会有更多的统计图形需求(比如曲线图、浮点图等等),那么系统分析员在设计该模块时,应该采用哪个设计模式才能更好地支持这一扩展性。( )
(A)观察者模式:一对多的问题,可以同时出多种图 (B)策略模式 (C)命令模式 (D)适配器模式
3.Star软件公司开发一个图像后期制作程序,该程序的主要功能是在原始的图片基础上可选择地调节对比度、反转、拉伸等操作。系统设计师Bob在设计系统时,想使对图片的每一步加工都都可逆,并不会影响到原始的图片,那么Bob应该使用哪个设计模。( )
(A)观察者模式 (B)状态模式 (C)单例模式 (D) 装饰者模式:针对原始数据对象进行不断的修饰和修改
4.Moon软件公司打算开发一个支持程序读取各种格式磁盘文件的API,该程序的主要功能是根据用户提出的格式请求(变化),提供一个对应的访问器对象,以用于对相应格式文件的读写。为了隐藏系统根据格式请求自动生成访问器对象的具体细节,那么Bob再设计这套API时应该使用哪个设计模式。()
(A)命令模式 (B)策略模式 (C)工厂模式:根据格式生成不同的访问器 (D) 装饰者模式
5.Sea软件公司打算开发一个网络防火墙,该系统能够检测网络入侵和磁盘病毒,该系统的内核的启动要用20秒左右的时间,并要占用30M左右的内存空间。系统设计师Bob在设计该系统时,为了避免内核对象不会重复创建,那么应该使用哪个设计模式。 ( )
(A)命令模式 (B)策略模式 (C)单例模式:有且仅具有唯一独立对象 (D) 外观模式
6.River软件公司开发一个Web服务器,该服务器能够根据客户端的请求,执行相应的处理,还可以对同时到达的请求排队,并对成功执行的每个请求记录日志。系统设计师Bob在设计该系统时,应该使用哪个设计模式以更好地支持对请求的处理 ( )
(A)命令模式:请求Request并且Response,为函数类,用命令模式 (B)观察者模式 (C)适配器模式 (D) 外观模式
7.Wylie学院准备开发一个新的OO课程注册系统,由于开发费用和时间的限制,这个新的课程注册系统将使用已有的一个非OO的课程目录遗留系统(legacy system)所提供的一些功能,因此需要和这个课程目录系统集成。Wylie学院也预见到,以后这个课程目录系统遗留系统将会被放弃,新的OO系统将逐步实现目前非OO系统所提供的功能。那么在设计遗留系统的访问模块时,应该用哪个设计模式 ( )
(A)命令模式 (B)观察者模式 (C)适配器模式:系统升级用 (D) 外观模式
8.Beach市的电信局委托Flag银行为其办理网上缴费业务。电信局的系统工程师Tom考虑到电信业务的复杂性,特别为Flag银行设计了一套新的接口,已屏蔽这一复杂性。借助这套新的接口,Flag银行可以不再为那些电信业务规则而烦恼了。请问系统工程师Tom在设计这套接口时会用到哪个设计模式 ( )
(A)模版方法模式 (B)观察者模式 (C)适配器模式 (D) 外观模式(门面模式):内置一个顺序执行流程的封装
9.Tree软件公司开发里一套主题果园游戏系统。该系统中的每个植物的一生live()都要经历plant()、grow()、harvest()三个过程,但每种果树的播种方式、成长周期、收获方法却不尽相同,那么系统设计师Tom在设计系统中的果树种群时,应该使用哪个设计模式( ) (A)命令模式 (B)观察者模式 (C)适配器模式 (D)模版方法模式:同时具有相同和不同的属性的单元的设计
10.Machine软件公司为Benz公司的一款跑车设计了一个程序控制的紧急按钮,该按钮的功能根据汽车的行驶状态不同,而具有不同的功能,比如汽车静止时,该按钮可以快速启动汽车;当汽车的时速超过200km/h时,该按钮可以在2秒内将车平稳地停下来;当汽车向后行驶时,该按钮可以立即刹车,基于以上功能考虑,架构师Bob在设计该按钮时,应该采用哪种设计模式 ( ) (A)命令模式 (B)观察者模式 (C)状态模式:根据不同的当前状态执行不同操作 (D) 外观模式
11. NextGen POS系统需要支持多种第三方外部服务,其中包括税金计算、信用卡授权、库存系统、账务系统。他们都具有不同的API,而且还无法改变。采用()方法解决NextGen POS的系统设计比较适合。
(A) 装饰器模式 (B)适配器模式:不同API链接,系统升级等 (C)观察者模式 (D)命令模式
12.观察者模式表述错误的是( )
(A) 观察者角色的更新是被动的----只有主题发生变化时才Update
(B) 被观察者可以通知观察者进行更新-----被观察者发送Update
(C) 观察者可以改变被观察者的状态,再由被观察者通知所有观察者依据被观察者的状态进行-----观察者不能改变被观察者
(D)以上表述全部错误
13. 当我们想创建一个具体的对象而又不希望制定具体的类时,可以使用模式( )
(A) 创建型模式:工厂等 (B)结构型:策略、装饰、模版等 (C)行为型:命令、状态等 (D)以上都可以
14. Jerry看到Tom睡觉了,他就会出来寻找奶酪;如果Tom醒了,Jerry就会回到洞中。请
问采用何种设计模式描述该场景比较合适( )
(A)装饰器模式 (B)适配器模式 (C)观察者模式:观察TOM (D)命令模式
15.G公司要为客户开发一个网站用来发布产品信息和客户沟通,那么该公司的系统分析人员,最好采用UML中的()进行功能分析与建模。
(A)用例图:描述系统功能 (B)活动图:业务建模(描述业务流程)或者程序流程图(设计算法)
(C)状态图:体现出外界变化时给予的反映 (D)包图:系统架构设计(将哪些子系统放到哪几个包中)
16.对于ATM机进动态建模,UML中()其中关键作用
(A)用例图 (B)活动图 (C)状态图 (D)顺序图
17.对于SafeHome系统中,涉及实体对象比较多(包括传感器、照相机等),在系统设计过程中,要将对象模型细化,产生设计(),才能设计出合理的架构
(A)类图:涉及到每个类和实体 (B)顺序图 (C)活动图 (D)用例
二 分析题:共4小题,每小题10分,满分40分;请将答案填入答题纸对应位置。
1、 生活中,我们购买一包纸巾Tissues,从中能够一张一张的抽取extract(),将其放入纸巾盒Box,能够使其看起来更漂亮,并且不影响它的使用。
请问采用何种设计模式描述该场景比较合适(4分),并且画出设计类图(6分)。
答:(1)可以用装饰器
(2)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwkjNmIDZxgjYmZWZ2UzMjdmY4IWOiNTM28CXlxGZklWbvwlbj5yZtlWYul2cuMzcvw1LcpDc0RHaiojIsJye.jpg)
2、旅游团Agency一天的进餐Dining()的安排是这样的,早餐Breakfast()和晚餐Dinner()旅游团成员Member自行解决,午餐Lunch()是由团里统一提供。请问分这样的就餐过程安排采用何种设计模式描述比较合适(4分),并且画出类图(6分)
答:(1)模版方法
(2)
3、有两个可兼容的接口Coffee和Tea,现有一个Client,只能访问Coffee的接口
prepare()。为了让Client也能与Tea的接口 package()交互,设计了一个TeaAdapter类。采用何种设计模式描述该场景比较合适(4分),并且画出设计类图(6分)。
答:(1)适配器
(2)
4、 一款关于挖掘宝藏游戏,其中人物角色凯奇(Cage),两个守护神(Eudemon):老虎(Tiger)、狮子(Lion);宝藏(Treasure)。
功能需求:
(1) 凯奇拿走一定数量的宝藏take(Treasure treasure,int quantity)
(2) 当宝藏数量发生变化的时候,会惊动守护神notify(),向凯奇发起攻击
attacks()
采用何种设计模式描述该场景比较合适(4分),并且画出设计类图(6分)。
答:(1)观察着模式,老虎和狮子观察宝藏数量
(2)
三、综合题:共1小题,满分20分;请将答案填入答题纸对应位置。
1. 某软件公司开发一款飞机飞行模拟系统,该系统主要模拟不同种类的飞机特征和起飞特征。需要模拟的飞机种类及其特征如表所示.
飞机种类 | 起飞特征 | 飞机特征 |
直升机(Helicopter) | 垂直起飞(VerticalTakeOff) | 亚音速飞行(SubSonicFly) |
客机(AirPlane) | 长距离起飞(LongDistanceTakeOff) | 亚音速飞行(SubSonicFly) |
歼击机(Fighter) | 长距离起飞(LongDistanceTakeOff) | 超音速飞行(SuperSonicFly) |
鹞式战斗机(Harrier) | 垂直起飞(VerticalTakeOff) | 超音速飞行(SuperSonicFly) |
题目要求:请根据以上题目描述,说明采用的设计模式(4分),给出系统的UML设计类图(6分),并用Java/C++/C#语言(任选一种)予以实现(10分)。
答:(1) 策略模式
需要接口2个:起飞特征和飞行特征
(2)
(3)代码:略
有一个人 打算给自己的店 设计订单管理子系统
1.根据客户的网上留言创建订单并保存客户信息
2.通过电话核实订单内容修改订单状态为已确
3.按照订单为客户备货,并且通过物流公司发送货物
4.修改网上订单状态为已发货,补充物流单号
5.收到货物之后,修改订单状态为交易成功,并且订单留底
问:画出用例