装饰模式(别名:包装类)
动态地给对象添加一些额外的职责。就功能来说装饰模式相比生成子类更为灵活。
Decorator Pattern(Another Name: Wrapper)
Attach additional responsibilities to an object dynamically。Decorators provide a flexible alternative to subclassing for extending functionality.
类图
模式的结构与使用
装饰模式的结构中包括四个角色。
+ 抽象组件(Component):抽象组件是一个抽象类或者接口。抽象组件定义了“被装饰者”需要进行“装饰”的方法。
+ 具体产品(ConcreteComponent):具体组件是抽象组件的一个子类,具体组件的实例称为“被装饰者”。
+ 装饰(Decorator):装饰也是抽象组件的一个子类,但装饰还包含一个抽象组件声明的变量以保存“被装饰者”的引用。装饰可以是抽象类也可以是一个非抽