软件设计与体系结构练习题 - 图文 联系客服

发布时间 : 星期日 文章软件设计与体系结构练习题 - 图文更新完毕开始阅读

三、 设计题

(一) chapter 2创建型设计模式

1. 一个房屋销售查询系统,以便查询不同类型的房屋的介绍、价格和地址等。为简单起见,只

考虑两种类型的房屋:别墅(House)和公寓(Condo),并假设每种房屋类型都包含:豪华(Super)、中等(Medium)两个等级。要求能够查看房屋信息和房屋价格,请使用创建型设计模式解决该问题,画出设计类图。 答:参考图 1

图 1 抽象工厂模式参考图

2. 假设有一个web托管公司,该公司在Windows和UNIX平台上托管服务。该Web托管公司

在这两种平台上提供三种不同类型的托管包:基本(Basic)、高级(Senior)和更高级(Super)。使用“抽象工厂”模式设计一个应用,查询该托管公司提供的不同类型的托管包功能,画出设计类图。

答:参考错误!未找到引用源。

<>UnixService<>AbstractFactory+provideService() : void+createWin() : WinService+createUnix() : UnixServicebasicUnix+provideService() : voidSeniorUnix+provideService() : voidSuperUnix+provideService() : voidBasicFactory+createWin() : WinService+createUnix() : UnixServiceSeniorFactory+createWin() : WinService+createUnix() : UnixServiceSuperFactory+createWin() : WinService+createUnix() : UnixService<>WinService+provideService() : voidBasicWin+provideService() : voidSeniorWin+provideService() : voidSuperWin+provideService() : void错误!未找到引用源。

图 2 抽象工厂模式解决win、Unix服务创建问题

3. 生成器模式可以用于描述肯德基KFC如何创建套餐:套餐是一个复杂对象,它一般包含主食

(如汉堡、牛肉饭等)、配餐(如新奥尔良烤翅、香辣鸡翅、吮指原味鸡等)和饮料(如果汁、可乐等)等三个组成部分,不同的套餐有不同的组成部分,而KFC的服务员可以根据顾客的要求,一步一步装配这些组成部分,构造一份完整的套餐,然后返回给顾客。套餐假设目前有如下几个套餐:午餐套餐(Lunch Suit)、晚餐套餐(Supper Suit)、豪华套餐(Luxury Suit)。请用生成器模式设计该应用,画出其设计类图。 答:参见图 3

Client+main()<>KFCBuilderKFCDirector-kfcBuilder : KFCBuilder+setKFCBuilder()+constructSuit()11+createMainFood()+createMatchFood()+createDrinker()+getSuit()LunchSuitBuilder+createMainFood()+createMatchFood()+createDrinker()+getSuit()SupperSuitBuilder+createMainFood()+createMatchFood()+createDrinker()+getSuit()LuxurySuitBuilder+createMainFood()+createMatchFood()+createDrinker()+getSuit()KFCSuit-MainFood : string-MatchFood : string-Drinker : string+setMainFood(in main : string)+setMatchFood(in match : string)+setDrinker(in drinker : string)图 3 生成器模式——KFC套餐构造

4. 下图所示设计类图是关于游戏软件的设计。在该设计中,SlowGameFactory类负责创建

SlowFighter对象与SlowMonster对象,并且将创建完的对象以其超类类型返回给ClientGUI对象。然后,ClientGUI对象将操纵SlowFighter对象与SlowMonster对象,使得它们互相打斗。

(1) 上述设计使用了什么设计模式?

抽象工厂

(2) 请在以上设计中添加SuperFighter和SuperMonster,SuperFighter与SuperMonster是对应的,请绘制新的设计类图。

修正一下该答案 5. 某公司要设计一个房屋选购系统,系统内的房屋分为三种类型:经济型(Economic

House)、普通型(Normal House)与豪华型(Luxury House)。不同房型的区别体现在面积大小(Area)以及卧室(Bedroom)、卫生间(Bathroom)、车库(Garage)、花园(Garden)、游泳池(Swimming Pool)的数量上。请用生成器模式设计该选购系统,画出设计类图。