1. 模式结构
2. 角色
(1) Component(抽象构件)
为具体构件类和抽象装饰类的共同父类
(2) ConcreteComponent(具体构件)
具体构件对象,后续由装饰类为其添加方法
(3) Decorator(抽象装饰类)
实现类,等价于聚合版的具体构件
在此类中通过set方法或者构造方法对构件进行聚合
用聚合的方式模拟对构件的继承
(4) ConcreteDecorator(具体装饰类)
继承抽象装饰类,在此类中添加新的方法完成对构件的装饰
3. 透明装饰模式
在调用期间,用抽象构件类型来定义具体构件对象/具体装饰对象
具体装饰在原方法中添加新行为
并且可以多重装饰
4. 半透明装饰模式
在调用期间,用具体装饰类型来定义具体装饰对象
具体装饰类中定义新方法提供客户端使用
5. 简化版装饰模式
不使用抽象构件类,直接让抽象装饰类继承具体构件类
不使用抽象装饰类,直接让具体装饰类装饰具体构件
6. 特点
对象结构型模式
用关联关系(聚合)代替继承,实现对类的动态扩展
7. 应用
Java IO流
JScrollpane对JList装饰实现添加滚动条
多重加密