装饰者模式:动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。
设计原则:类应该对扩展开放,对修改关闭。在不修改现有代码可以搭配新的功能,这样具有很好的弹性。
特点:装饰者和被装饰对象有相同的超类。
可以用一个或多个装饰者包装一个对象。(所以装饰过的对象还可以被继续装饰)
装饰者可以加上自己的行为,达到特定目的。
装饰者通常是由工厂模式创建的。
例子:java.io类
InputStream(抽象组件)>FilterInputStream(抽象装饰者)>LineNumberInputStream(具体装饰者)