概念:动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。这是第一个符号开发-关闭原则的模式。
要点: #继承属于扩展形式之一,但不见得是达到弹性设计的最佳方式。 #在我们的设计中,应该允许行为可以被扩展,而无须修改现有的代码。 #组合和为多可用于在运行时动态地加上新的行为。 #除了了继承,装饰者模式也可以让我们扩展行为。 #装饰者模式意味着一群装饰者类,这些类用来包装具体的组件。 #装饰者类反映出被装饰的组件类型(事实上,他们具有相同的类型,都经过接口和继承实现的,都继承或者实现同样的接口或者抽象类) #可以用无数个装饰者来包装组件。 #装饰者会导致设计中出现许多小对象,如果过渡使用,会让程序变得很复杂。
类图:抽象图:
|