定义:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作
结构:
- 目标角色:期待得到的接口
- 源角色:需要适配的接口
- 适配器角色:把源接口转换成目标接口
适用场景:
- 需要一个统一的输出接口,而输入端的类型不可预知
- 系统需要使用现有的类,而此类的接口不符合系统的需要(接口不兼容)
- 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作
UML类图:
下面就是适配器模式的代码实现,以变压器为例(比较抽象):
Target(5V):
public interface FiveVolt {
int getVolt5();
}
源角色:
public class Volt220 {
public int getVolt220(){
return 220;
}
}
Adapter(变压器):
//重点在这里的extends和implements
public class Adapter extends Volt220 implements FiveVolt{
@Override
public int getVolt5() {
return 5;
}
}
Test:
public class Test {
public static void main(String[] args){
System.out.println("输出电压:"+new Adapter().getVolt5());
}
}
总结:适配器模式的经典实现在于将原本不兼容的接口融合在一起,使之能够很好地进行合作。在实际开发中,适配器模式的实现并不固定,可以灵活调整实现方式。例如在ListView中的隔离变化,使得整个UI架构变得更灵活,能够拥抱变化。
参考:《Android源码设计模式与实战》
https://github.com/simple-android-framework-exchange/android_design_patterns_analysis/tree/master/adapter/mr.simple