《HeadFirst设计模式》学习笔记2-装饰者模式
2015-03-08 15:55
162 查看
说明
装饰者模式动态地将责任附加到对象上。若要拓展功能,装饰着提供了比继承更有弹性的替代方案。类图
要点
继承属于扩展形式之一,但不见得是达到弹性设计的最佳方式。在我们的设计中,应该允许行为被扩展,而无需修改现有的代码。
组合和委托可用于在运行时动态地加上新的行为。
出了继承,装饰者模式也可以让我们扩展行为。
装饰者模式意味着一群装饰者类,这些类用来包装具体组件。
装饰者类反应出被装饰的组件类型(事实上,他们具有相同的类型,都经过接口或继承实现)。
装饰者可以在被装饰者的行为前面与/或后面加上自己的行为,甚至被装饰者的行为整个取代掉,而达到特定的目的。
你可以用无数个装饰者包装一个组件。
装饰者一般对组件的客户是透明的,除非客户程序依赖于组件的具体类型。
装饰者会导致设计中出现许多小对象,如果过度使用,会让程序变得很复杂。
实例类图
代码
组件抽象类
public abstract class Beverage { String description = "Unknown Beverage"; public String getDescription() { return description; } public abstract double cost(); }
组件的一个实现类
public class Espresso extends Beverage { public Espresso() { description = "Espresso"; } public double cost() { return 1.99; } }
装饰者抽象类
public abstract class CondimentDecorater extends Beverage { public abstract String getDescription(); }
装饰者的一个实现类
public class Mocha extends CondimentDecorator { Beverage beverage; public Mocha(Beverage beverage) { this.beverage = beverage; } public String getDesciption() { return beverage.getDescription() + ", Mocha"; } public double cost() { return .20 + beverage.cost(); } }
相关文章推荐
- 【HeadFirst设计模式】装饰者模式
- HeadFirst设计模式 之 C++实现(三):Decorator(装饰者模式)
- 《HeadFirst设计模式》学习笔记——策略模式
- headfirst设计模式(3)—装饰者模式
- 《HeadFirst设计模式》书摘-装饰者模式/抽象工厂模式/工厂方法模式
- 《HeadFirst设计模式》学习笔记1-观察者模式
- 《Head First 设计模式》学习笔记——观察者模式 + 装饰者模式
- 装饰者模式Decorator – 学习HeadFirst设计模式记录
- HeadFirst设计模式(三)装饰者模式
- HeadFirst设计模式_读书笔记_003_装饰者模式
- 《Head First 设计模式》学习笔记——观察者模式 + 装饰者模式
- 【设计模式】HeadFirst设计模式(三):装饰者(Decorator)模式
- 读headFirst设计模式 - 装饰者模式
- HeadFirst设计模式篇三:装饰者模式
- 调侃《HeadFirst设计模式》之装饰者模式
- 《HeadFirst设计模式》读书笔记-第3章-装饰者模式
- 《HeadFirst设计模式》学习笔记——观察者模式
- 《HeadFirst设计模式》学习笔记3-工厂模式
- HeadFirst设计模式 之 C++实现(三):Decorator(装饰者模式)
- 《Head First 设计模式》学习笔记——装饰者模式