适配器模式
简述:
适配器模式目的是将一个接口转换成一个接口。它能将新的未实现的接口,通过旧的已实现的接口来填充。
元素结构
适配器模式主要具有调用者client,目标接口 ,适配者 和被适配者(有可能是类或者对象)
- 调用者client
client 主要职责就是调用目标接口方法。 目标接口
目标接口提供client调用,并未实现的接口。它的子类需要其他接口实现来填充。适配者
- 是配置实现了目标接口,但它的实现方法需要通过被适配者来填充。
- 旧的接口(已存在的接口)
不解释 - 被适配者
被适配者实现了旧接口的类。
分类
适配器模式可分为:对象适配器 和 类适配器。
对象适配器采用的是组合的方式,适配器具有旧接口实现类的成员变量。
类适配器采用的是多重继承的方式,虽然直接使用继承很放变,但不易于扩展,基于“多组合,少继承的设计原则”,不建议才用类适配器。
流程图
流程图采用的visio 画的。不到位的地方欢迎点评。
图中与其他适配器模式流程图中多出了OldInterface ,我是根据自己的理解画的,根据适配器的定义将一个接口转换成另一个接口,所以我认为应该在类图中体现出来。
Java示例
代码使用的伪代码。
目标接口
public interface Target{
public void targetMethod1();
public void targetMthod2();
}
适配者
public class Adapter implements Target{
private OldInterface adaptee;
public Adapter(OldInterface adaptee){
this.adaptee = adaptee;
}
public void targetMethod1(){
...
adaptee.methodA()
...
}
public void targetMethod2(){
....
adaptee.methodB();
}
client
public class Client{
public static void main(){
OldInterface adaptee = new Adaptee();
Target adapter = new Adapter(adaptee);
adapter.targetMethod1();
adapter.targetMethod2();
}
}