一、装饰器:
对原有功能进行扩展,是其原有功能和能力得到增强。
当然对原有功能进行增强的方式除了是用适配器模式外,通过继承的方式也是对其他类的功能进行增强。
主要角色有:待装饰抽象类、待装饰类、装饰类
装饰类和待装饰类都继承自待装饰抽象类,装饰类中还需依赖待待装饰类。那么此时装饰类可以既可以使用带装饰类的功能,还能继续扩展其他功能。
与继承的区别:继承是一种泛化关系;使用装饰器时两个类的关系是依赖关系,更能满足低耦合的设计原则。
二、适配器:
不对原有功能进行扩展,通过适配器对被适配器进行功能装换,是其他对象能”听懂“被适配器。
主要角色:适配器、被适配的类
适配器通过依赖或者继承被适配器,对被适配器的方法进行装换然后返回。