适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够在一起工作.
适配器模式有类的适配器模式和对象的适配器模式两种不同的形式:
- 类的适配器模式把被适配的类的API转换成为目标类的API,其结构图如下:
- 对象的适配齐模式把被适配的类的API转换成目标类的API,与类的适配器模式不同的是,对象的适配器模式不是使用继承关系连接到Adaptee类,而是使用为外关系连接到Adaptee类.结构图如下:
使用范围:
- 系统需要时用现有的类,而此类的接口不符合系统的需要
- 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作.这些源类不一定有很复杂的接口.
缺省适配器类是指设计一个抽象的适配器类中实现接口,此抽象类要求给接口要求的每个方法都提供一个空的方法. 这样可以避免子类实现要求的所有方法。这种模式叫做缺省适配器模式。其中这个抽象类是Adaptee,而实现的子类是Adapter。