【正确答案】(1) abstract
(2) String getDescription
(3) abstract int cost()
(4) Beverage beverage
(5) beverage
(6) beverage
【答案解析】 本题考查装饰器(Decorator)模式的概念及应用。
Decorator模式动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式提供了比继承更有弹性的替代方案。
Decorator模式的优点是有效避免了使用继承方式扩展对象功能而带来的灵活性差、子类无限制扩展的问题;装饰者与被装饰者之间虽然都是同一类型,但是它们彼此是完全独立并可以独立任意改变的。
Decorator模式的适用场合是:想透明并且动态地给对象增加新的职责;给对象增加的职责,在未来存在增加或减少的可能。
Decorator模式的类图如下所示:
题目利用Decorator模式来计算各种配料组合的咖啡的价格。Beverage相当于抽象的Component类,最终要计算出Beverage的价钱。Espresso和DarkRoast是4个具体的组件,代表一种咖啡类型。M跳ha和Whlp是配料装饰者,可以添加到不同类型的咖啡中。CondimentDecorator相当于Decorator,是装饰者共同实现的接口。在本题中,确定装饰者共同实现的接口是什么,是一个重要的考查点。
