版权声明:本文为博主经验积累 https://blog.csdn.net/qq_23452385/article/details/89285637
Java设计模式 —— 适配器模式(Adapter)
定义
适配器模式:将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。
特征:
- 同样的功能,但老代码和新代码接口不一致
代码实现
1.Android 手机数据线,早期是 Micro USB 接口
class MicroUSB {
public void connection() {
System.out.println("Micro USB 接口数据线连接...");
}
}
2.Android 现在使用 Type-C 接口数据线,
interface Target {
void connection();
}
class TypeC implements Target {
@Override
public void connection() {
System.out.println("Type-C 接口数据线连接...");
}
}
3.创建适配器类,继承了被适配类,同时实现标准接口
class DataLineAdapter extends MicroUSB implements Target {
@Override
public void connection() {
System.out.println("插入 Type-C 转接头");
super.connection();
}
}
4.客户端代码,测试
public class Main {
public static void main(String[] args) {
Target target = new TypeC();
target.connection();
Target adapter = new DataLineAdapter();
adapter.connection();
}
}
5.结果
Type-C 接口数据线连接…
插入 Type-C 转接头
Micro USB 接口数据线连接…
6.创建适配器类,实现标准接口,将这个调用委托给实现新接口的对象来处理
class PhoneDataLineAdapter implements Target {
private Target target;
public PhoneDataLineAdapter(Target target) {
this.target = target;
}
@Override
public void connection() {
System.out.println("插入 Type-C 转接头");
target.connection();
}
}
public class Main {
public static void main(String[] args) {
// 使用特殊功能类,即适配类
Target adapter = new PhoneDataLineAdapter(new TypeC());
adapter.connection();
}
}
适配器模式使用问题
1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。
2.由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。
Android中适配器模式
最常见的ListView、GridView、RecyclerView等的Adapter
感谢
segmentfault: 适配器模式
菜鸟教程:适配器模式
百度百科:适配器模式
郭霖: Java设计模式透析之 —— 适配器(Adapter)