1.前言
适配器模式在Android开发中使用率极高,可以通过随处使用的Adapter来体现。适配器归根结底就是将两个不兼容的类融合在一起,好比粘结剂一样。
2.定义
适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
3.UML图
适配器模式分为两种:①类适配器模式;②对象适配器模式。
类适配器模式采用的是继承的方式。下面是对象适配器模式的UML图。
4.思维导图
5.代码简单实例
//Target角色
public interface FiveVolt {
int getVolt5();
}
//需要被转换的角色,Adaptee
public class Volt220 {
public int getVolt220(){
return 220;
}
}
//Adapter角色,将220V电压转换成电脑需要的5V电压;
// 类适配器模式关键代码
public class VoltAdapter extends Volt220 implements FiveVolt {
@Override
public int getVolt5() {
return 5;
}
}
//类适配器模式
VoltAdapter adapter = new VoltAdapter();
Log.d("zsf","输出电线电压:" + adapter.getVolt220());
Log.d("zsf","输出电源电压:" + adapter.getVolt5());
--------------------------------------------------------------------------我是分割线(下面就是对象适配器模式的示例代码了)-------------------------------------------------------------------------
//Target角色
public interface FiveVolt {
int getVolt5();
}
//需要被转换的角色,Adaptee
public class Volt220 {
public int getVolt220(){
return 220;
}
}
//对象适配器模式关键代码
//没有使用extends方式,而是采用了构造方法
public class VoltAdapter2 implements FiveVolt {
Volt220 mVolt220;
public VoltAdapter2(Volt220 volt220) {
mVolt220 = volt220;
}
public int getVolt220() {
return mVolt220.getVolt220();
}
@Override
public int getVolt5() {
return 0;
}
}
//对象适配器模式
VoltAdapter2 adapter2 = new VoltAdapter2(new Volt220());
Log.d("zsf","输出电源电压:" + adapter2.getVolt5());
6.总结
优点:
①更好的复用性;②更好的扩展性
缺点:
过多使用适配器模式造成系统凌乱。体现在代码上看到的是用A接口,但内部被适配成了B接口。