定义:动态地给一个对象添加一个格外的职责,就增加功能来说,装饰模式比生成子类更为灵活。JDK里的I/O
1.Component抽象父类:一个对象接口,可以给这些对象动态地添加职责。
2.ConcreteComponent具体的装饰对象:继承了Component,也可以给这个对象添加一些职责。
3.Decorator装饰抽象父类:继承了Component,从外类来扩展Component类的功能,但对于Component来说,是无需知道Decorator的存在的。在此类中定义一个Component属性,并提供SetComponent()方法。
4.ConcreteDecorator具体的装饰对象:继承了Decorator,起到给Component添加职责的功能。
例子:比如给人穿衣服 。比如加密数据和过滤词汇都可以试数据持久化前的装饰功能,装饰的顺序很重要。
优点:把类的装饰功能从类中搬移去除,有效地把类的核心职责和装饰功能区分开来,这样可以简化原有的类,而且可以去除相关类中重复的装饰逻辑。