装饰器Decorator是一种对象结构型设计模式,意在动态地给一个对象添加一些额外的职责,就增加功能来说,采用继承机制生成子类也可以,但Decorator模式更为灵活。例如,当我们想给一个组件添加额外的功能时,就把这个组件嵌入另一个对象中,由这个对象来完成任务,充当装饰者,它与被装饰的组件接口一致,因此对于使用该组件的客户是透明的。
装饰器Decorator模式的结构如下类图所示:
图中,Component定义一个对象接口,可以给这些对象动态地添加职责;ConcreteComponent定义一个对象,可以给这些对象添加一些职责;Decorator维持一个指向Component对象的指针,并定义一个与Component接口一致的接口,将请求转发给它的Component对象,并有可能在转发请求前后执行一些附加的动作;ConcreteDecrator向组件添加职责。