概述
- 适配器模式是将一个类的接口(被适配者)转换成客户希望的另一个接口(目标)的成熟模式,该模式中涉及有目标 、被适配者和适配器。
- 适配器模式的关键是建立一个适配器,这个适配器实现了目标接口并包含有被适配者的引用。
适配器模式的结构
对象适配器模式的结构中包含三种角色。
- 目标(Target)
- 被适配者(Adaptee)
- 适配器(Adapter)
目标(Target)
- 目标是一个接口。
- 该接口是客户想使用的接口。
被适配者(Adaptee)
- 被适配者是一个已经存在的接口或抽象类,这个接口或抽象类需要适配。
适配器(Adapter)
- 适配器是一个类。
- 该类实现了目标接口并包含有被适配者的引用,即适配器的职责是对被适配者接口(抽象类)与目标接口进行适配。
适配器的适配程度
- 完全适配
- 不完全适配
- 剩余适配
完全适配
- 如果目标(Target)接口中的方法数目与适配者(Adaptee)接口的方法数目相等,那么适配器(Adapter)可将被适配者接口(抽象类)与目标接口进行完全适配。
不完全适配
- 如果目标(Target)接口中的方法数目少于被适配者(Adaptee)接口的方法数目,那么适配器(Adapter)只能将被适配者接口(抽象类)与目标接口进行部分适配。
剩余适配
- 如果目标(Target)接口中的方法数目大于被适配者(Adaptee)接口的方法数目,那么适配器(Adapter)可将被适配者接口(抽象类)与目标接口进行完全适配,但必须将目标多余的方法给出用户允许的默认实现。
适配器模式的优点
- 目标(Target)和被适配者(Adaptee)是完全解耦的关系。
- 适配器模式满足“开-闭原则”。
- 当添加一个实现Adaptee接口的新类时,不必修改Adapter,Adapter就能对这个新类的实例进行适配。
适合适配器模式的情景
- 一个程序想使用已经存在的类,但该类所实现的接口和当前程序所使用的接口不一致。