适配器模式
定义:
适配器模式(Adapter Pattern)两个不兼容的接口之间的桥梁,将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
优点:
- 可以让任何两个没有关联的类一起运行。
- 提高了类的复用。
- 增加了类的透明度。
- 灵活性好。
缺点:
- 过多地使用适配器,会让系统非常零乱,不易整体进行把握。
- 由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。
使用场景:
有动机地修改一个正常运行的系统的接口,这时应该考虑使用适配器模式。
注意事项:
适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。
在Android当中对于Adapter是在熟悉不过的,在ListView/RecyclerView/ViewPager这几个控件都使用了适配器模式。
下面简单看下实例:
以电脑的电源适配器为例。
- ComputerAdapter
public class ComputerAdapter {
/**
* 适配电源的方法
*/
public int adapter(int source_v) {
//中国标准电压
if (source_v == 220) {
source_v = Computer.V;
}
//欧美标准电压
if (source_v == 110) {
source_v = Computer.V;
}
return source_v == Computer.V ? Computer.V : -1;
}
}
- Computer
public class Computer {
/**
* 电脑需要的电源
*/
public static final int V =20;
/**
* 充电的方法
*/
public void onChange(int v) {
if (v == V) {
System.out.println("适配器接入成功,开始充电...");
} else {
System.out.println("适配器不匹配");
}
}
}
- main入口
public class MyClass {
public static void main(String[] args) {
Computer computer = new Computer();
ComputerAdapter adapter = new ComputerAdapter();
int v = adapter.adapter(220);
computer.onChange(v);
System.out.println("----------------");
v = adapter.adapter(110);
computer.onChange(v);
System.out.println("----------------");
v = adapter.adapter(100);
computer.onChange(v);
}
}
打印结果:
适配器接入成功,开始充电...
----------------
适配器接入成功,开始充电...
----------------
适配器不匹配