适配器模式入门

适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

适配器不是在详细设计时添加的,而是解决当前已有项目遇到的问题。以下情况可以使用适配器模式:

  • 已有的类的接口与新需求不匹配
  • 需要一个可复用的类,能够和接口不兼容的其他类进行协作
  • 需要适配一个类的几个不同子类,可以使用对象适配器来适配其父类接口

客户使用适配器的过程如下:

  1. 客户通过目标接口调用适配器的方法对适配器发出请求
  2. 适配器使用被适配者接口把请求转换成被适配者的一个或多个接口
  3. 客户收到调用结果,但不会察觉到这是适配器在起转换作用

对象适配器

对象适配器使用组合来适配两个接口,适配器类包含了一个对被适配对象的引用, 其类图如下:

对象适配器的特征如下:

  • 可以适配多个Adaptee及其子类
  • 难以重载Adaptee的行为,需要借助于子类对象而非Adaptee本身
  • 需要额外的指针间接访问Adaptee并适配该行为

类适配器

类适配器通过继承来适配两个接口, 类图如下:

类适配器特征如下:

  • 只针对单一具体的Adaptee类,把Adaptee适配到Target
  • 因为是通过直接的子类化进行的适配,易于重载Adaptee的行为
  • 只有一个Adapter对象,无需额外的指针间接访问Adaptee