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