装饰器模式
概念及作用
- 动态的将附加组件添加的对象,装饰器为子类化提供了灵活的替代扩展功能
- 通过递归包装客户端指定的核心对象的装饰
1 | 适配器为其主题提供不同的界面。代理提供相同的接口。 装饰器模式提供增强的界面。 |
UML图
优缺点
优点
- 装饰类和被装饰类可以独立发展,而不会互相耦合
- 装饰模式的继承关系的一个替代方案.装饰类Decorator装饰多层,返回的对象都是Component(抽象构件),实际上实例化的是具体构件,也就是要装饰的对象!
- 装饰模式可以动态地扩展一个实现类的功能.
缺点
- 多层装饰较为复杂
使用场景
- 需要扩展一个类的功能,或給一个类添加附加功能.当然最好是給多个相关类都添加这个功能的场景.
- 需要动态給一个对象增加功能,这些功能可以动态地撤销.
- 需要为一批类进行改装或加装功能.
实例代码
1 | // 1. "lowest common denominator" |
C++版的
1 |
|
再来一个
1 |
|