定义
适配器模式把一个类的接口变换成客户端所期待的另外一种接口,从而使原本不匹配的接口能在一起工作
使用场景
(1)系统需要使用一个现有的类,而此类的接口不符合系统的需要,就是接口不兼容
(2)想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的类,包括一些可能在将来引进的类一起工作
(3)需要一个统一的输出接口,而输出端类型不可预知
UML图
我们可以看到
Target 目标角色 也就是所期待得到的接口
Adaptee 现在需要适配的接口
Adapter 适配器角色 也是核心类把源接口转成目标接口 这里不能是接口 而必须是特定的类
代码案例
原来要适配的接口
public class Volt220 {
public int getVolt220(){
return 220;
}
}
定义要适配的接口
public interface FiveVolt {
public int getVolt();
}
适配的核心接口
public class VoltAdapter extends Volt220 implements FiveVolt {
@Override
public int getVolt() {
return 5;
}
}
public class Test {
public Test() {
VoltAdapter voltAdapter = new VoltAdapter();
voltAdapter.getVolt();
}
}
Android其他使用
在Android上适配器也被用来适配多种数据来源 我们将view的组装交给用户 ListView只需要拿到适配器就可以显示ui,隔离变化 拥抱变化
优缺点
1.更好的复用性
系统需要使用现有的类 而此类的接口不符合系统的需要,那么通过适配器可以让这些功能得到更好的复用
2. 更好扩展性
实现适配器的功能时候,可以调用自己开发的功能,从而自然地扩展系统的功能
缺点
过多使用适配器会让系统非常凌乱,不容易整体把控。