基本解释
http://c.biancheng.net/view/1366.html
通俗解释
实现同一个接口的类,其中一个类(增强类)通过持有另一个类创建的对象的引用(需要被增强类),在方法中调用并其进行其他装饰逻辑
各组件解释
抽象构件角色:定义了哪些方法需要被增强,增强类和被增强类都要实现此接口
具体构件角色: 可以理解为被增强的类
抽象装饰角色:实现抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。
具体装饰:实现抽象装饰的相关方法,并给具体构件对象添加附加的责任(个人觉得可以省略,在抽象装饰角色里面增强功能即可)
问题
装饰和适配器的区别?
从代码层面来看,装饰和适配器都是通过持有对象的方式,对原有逻辑进行调整。适配器并不需要适配类和被适配类有强依赖关系(持有引用即可),而装饰器需要装饰类和被装饰类都实现同一接口而方便外部调用。