适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
适配器不是在详细设计时添加的,而是解决当前已有项目遇到的问题。以下情况可以使用适配器模式:
- 已有的类的接口与新需求不匹配
- 需要一个可复用的类,能够和接口不兼容的其他类进行协作
- 需要适配一个类的几个不同子类,可以使用对象适配器来适配其父类接口
客户使用适配器的过程如下:
- 客户通过目标接口调用适配器的方法对适配器发出请求
- 适配器使用被适配者接口把请求转换成被适配者的一个或多个接口
- 客户收到调用结果,但不会察觉到这是适配器在起转换作用
对象适配器
对象适配器使用组合来适配两个接口,适配器类包含了一个对被适配对象的引用, 其类图如下:
对象适配器的特征如下:
- 可以适配多个Adaptee及其子类
- 难以重载Adaptee的行为,需要借助于子类对象而非Adaptee本身
- 需要额外的指针间接访问Adaptee并适配该行为
类适配器
类适配器通过继承来适配两个接口, 类图如下:
类适配器特征如下:
- 只针对单一具体的Adaptee类,把Adaptee适配到Target
- 因为是通过直接的子类化进行的适配,易于重载Adaptee的行为
- 只有一个Adapter对象,无需额外的指针间接访问Adaptee
原文
http://www.devzhang.cn/2018/04/22/适配器模式入门/