1. 类别:对象结构型模式
2. 意图:动态给一个组件添加一些额外的职责,Decorator模式可以仅从外部改变组件,而组件无需对它的装饰有任何了解,即装饰对组件是透明的。
3. 结构:
4. 参与者:
l Component:定义一个对象接口,可以给这些对象动态透明地添加职责。
l ConcreteComponent:Component的实现类。
l Decorator:与Component接口一致的抽象类,并维持一个指向Component对象的指针。
l ConcreteDecortor:向组件添加额外的职责。
5. 协作:
l Decorator将请求转发给它的Component对象,并在转发前后执行附加的功能。
6. 适用性:
l 在不影响组件的情况下,以动态、透明的方式给单个对象添加职责。
l 处理那些可以撤销的职责。
l 组件有大量独立的扩展,不适合采用子类进行扩充时。
7. 已知应用:
l Java IO Streams:流链
l SiteMesh:用来在JSP中实现页面布局和装饰组件,能够较容易实现页面中动态内容和静态装饰外观的分离。