软件设计模式与体系结构

一、P158练习题1-(1)

软件设计模式与体系结构软件设计模式与体系结构软件设计模式与体系结构
(1)画出新设计的设计类图软件设计模式与体系结构
(2)说明为什么新设计遵循开闭原则

开闭原则(OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一。开闭原则中“开”,是指对于组件功能的扩展是开放的,是允许对其进行功能扩展的。本题中将findKeyWords提出为一个接口,五个方法实现此接口,可拓展性高。
开闭原则中“闭”,是指对于原有代码的修改是封闭的,即不应该修改原有的代码。设计的类图中封装性好,KeyWords属性、操作不易被修改。

二、P158练习题1-(2)

软件设计模式与体系结构软件设计模式与体系结构软件设计模式与体系结构软件设计模式与体系结构
(1)说明为什么要使用策略模式

策略模式提供了对“开闭原则”的完美支持,用户可以在不修改原有系统的基础上选择算法或行为,也可以灵活地增加新的算法或行为。
策略模式提供了管理相关的算法族的办法。策略类的等级结构定义了一个算法或行为族。恰当使用继承可以把公共的代码移到父类里面,从而避免代码重复。
使用策略模式可以避免使用多重条件(if-else)语句。多重条件语句不易维护,它把采取哪一种算法或采取哪一种行为的逻辑与算法或行为的逻辑混合在一起,统统列在一个多重条件语句里面,比使用继承的办法还要原始和落后。

(2)画出该模式的设计类图
软件设计模式与体系结构

(3)解释为什么自己的设计符合开闭原则

开闭原则(OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一。开闭原则中“开”,是指对于组件功能的扩展是开放的,是允许对其进行功能扩展的。本题中将type提出为一个接口,三个方法实现此接口,可拓展性高。另外,将computeFare提出为一个接口。
开闭原则中“闭”,是指对于原有代码的修改是封闭的,即不应该修改原有的代码。设计的类图中封装性好,PhoneFareComputation属性不易被修改。