一、定义
GOF上对装饰器模式的意图这样描述:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式比生成子类更为灵活。从根本来说,装饰器模式将多态和委托结合在一起,使得我们可以动态地组合对象的行为。
二、场景设计
装饰器模式的典型应用是Java里的流设计。在java中,通常每个流对象中包含另一个流对象,一个流对象通常会将自己预先处理过的字符或比特流转发给里层的另一个流对象。通常情况下,在装饰器模式中,类的实现依赖于作为构造方法参数的那个装饰器的对象。一个例子,GZIPOutputStream类实现write()操作的方法是:压缩接收到的比特,然后把他们写到作为构造方法参数传入的OutputStream对象中去。换句话说,GZIPOutputStream类在OutputStream对象的基础上添加了压缩操作。
三、类图