模式定义
定义:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法。修饰类必须和原来的类有相同的接口
类型:结构型模式
类图
模式结构
原始类: 抽象接口,真实对象和装饰对象具有相同的接口,以便动态的添加职责
继承类A :具体的对象。
装饰器基类:装饰类,继承了Component,从外类来扩展Component类的功能,并且持有一个构建引用,进行请求转发
装饰类A/B:具体装饰类,用于给实际对象添加职责。
优点/缺点
优点
- 装饰类和被装饰类都只关心自身的核心业务,实现了解耦。
- 方便动态的扩展功能,且提供了比继承更多的灵活性。
缺点
- 如果功能扩展过多,势必产生大量的类。
- 多层装饰比较复杂。
适用场景
- 扩展一个类的功能。
- 动态添加功能,动态撤销。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。