定义
动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式相比生成子类更为灵活
类图
优点:
1. 装饰类和被装饰类可以独立发展,而不会相互耦合
2. 装饰模式是集成关系的一个替代方法,不管装饰多少层,其实现的还是 is-a 关系
3. 装饰模式可以动态地扩展一个实现类的功能
缺点
多层装饰比较复杂
使用场景
需要扩展一个类的功能,或给一个类增加附加功能
需要动态地给一个对象增加功能,这些功能可以再动态的撤销
需要为一批兄弟类进行改装或加装功能