适配器模式
定义
保留现有类所提供的服务,通过适配器,将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
有了适配器,客户不再直接调用现有类的服务,而是调用适配器的通用服务。至于如何组织现有类的服务,则客户不用关心,完全由适配器自己去完成。
对象适配器模式类图
- Client:客户,调用适配器Adatpor的用户;
- Adaptor:针对原角色相同的功能(API却不一样),对客户提供统一的接口。适配器中包含原角色实例,在统一的接口中调用相应实例的原生服务;
- Adaptee(原角色):原角色可能不止一个,这些原角色虽然提供相同的服务,但接口却不一样;
应用
jQuery:jQuery就是调用原角色中的API对外体统统一的接口服务。
类适配器模式类图
- Client:客户,调用适配器Adatpor的用户;
- Adaptor:通过继承的方式同时拥有原角色的服务,然后再对这些服务进行组织,以达到提供通用接口的目的。
- AdapteeN(原角色):拥有各种不同功能的原角色。
这种模式的限制性很强,支持多继承的语言本来就不多。如果是对于两个独立的系统,多继承则更难。因此,推荐使用对象适配器模式。