
装饰器模式
- 装饰着和被装饰者有相同的超类型。可以用一个或多个装饰者包装对象。
- 装饰者可以在委托被装饰者行为前后,自实现特殊行为
设计原则 - 开闭原则
- 对扩展开放,对修改封闭
- *策略模式、观察者模式和装饰器模式均遵循开闭原则
设计模式 - 装饰器模式

- 动态地给一个对象添加额外的职责,同时不改变其结构。装饰器模式提供了一种灵活的替代继承方式来扩展功能。
- 避免通过继承引入静态特征,特别是在子类数量急剧膨胀的情况下。
- 允许在运行时动态地添加或修改对象的功能。
应用
优点
- 低耦合:装饰类和被装饰类可以独立变化,互不影响。
- 灵活性:可以动态地添加或撤销功能。
- 替代继承:提供了一种继承之外的扩展对象功能的方式。
缺点
- 复杂性
- 多层装饰可能导致系统复杂性增加。
- 存在大量小类,使用时将会增加代码复杂度
- 复杂性
场景
- 需要在不增加大量子类的情况下扩展类的功能。
- 需要动态地添加或撤销对象的功能。
实例
Java I/O