适配器模式
一、简介
适配器模式把一个类的接口变成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够一起工作。
二、使用场景
- 现有类不符合系统需求即接口不兼容
- 建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类包括一些可能在将来引进的类 一起工作。
- 需要一个统一的输出接口而输入端的类型不可预知
三、简单实现
适配器模式有两种:类适配器和对象适配器。这里以电源接口为例,我们知道电脑手机等电子产品的电源一般都是低于标准电压220V的,因此就需要适配器来解决这种不适配的状况。
类适配器模式
类适配器模式是通过继承来完成转换的。
//target 目标角色
public interface FiveVolt{
public int getVolt5();
}
//adaptee角色
public class Volt220{
public int getVolt220(){
return 220;
}
}
//adapter角色
public class VoltAdapter extends Volt220 implements FiveVolt{
@Override
public int getVolt5() {
return 5;
}
}
public void Test(){
VoltAdapter adapter=new VoltAdapter();
adapter.getVolt5();
}
类适配器模式的adapter继承了Volt220并实现FiveVolt以完成电压转换的目标。
对象适配器模式
对象适配器模式通过代理组合来完成转换
//target 目标角色
public interface FiveVolt{
public int getVolt5();
}
//adaptee角色
public class Volt220{
public int getVolt220(){
return 220;
}
}
public class Volt5Adapter implements FiveVolt{
Volt220 volt220;
public Volt5Adapter(Volt220 volt220) {
this.volt220 = volt220;
}
@Override
public int getVolt5() {
return 5;
}
public int getVolt220(){
return volt220.getVolt220();
}
}
public void Test(){
Volt5Adapter adapter1=new Volt5Adapter(new Volt220());
adapter1.getVolt5();
}
对象适配器模式的adapter仅实现了FiveVolt接口,对于volt220则采用组合方式纳入adapter中。
四、小结
Android中适配器模式典型的应用就是ListView和RecycleView的Adapter。使用适配器模式可以是类有更好的复用性和更好的扩展性。但是过多的使用会让系统凌乱,不易整体把握。