提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
当一个系统需要使用另一个系统的接口,但两个系统的接口不兼容时,可以使用适配器模式进行接口转换。
在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配转换。
比如:美版和港版电脑的插头与国行不一样,所以我们需要更换电源适配器,或者增加一个转换插头来解决问题。
需要一个统一的输出接口,而输入类型不可预知。
一、适配器模式简介
适配器模式把一个类的接口变换成客户端所期待的另一个接口,从而使原本因接口不兼容而无法一起工作的两个类能一起工作。
二、代码实现
场景:苹果充电通过适配器将小米充电器转换成lighting充电
1.苹果充电接口
public interface Lightning {
// 苹果充电
void recharge();
}
2.苹果手机
public class Iphone {
// 接收电
public void receiveElectricity(Lightning lightning) {
lightning.recharge();
}
}
3.TypeC充电口
public interface TypeC {
// typeC充电
void recharge();
}
4.小米充电器
public class XiaoMiRecharge implements TypeC {
@Override
public void recharge() {
System.out.println("小米充电器开始充电了~~~");
}
}
5.充电适配器
public class RechargeAdapter implements Lightning {
private final TypeC typeC;
public RechargeAdapter(TypeC typeC) {
this.typeC = typeC;
}
@Override
public void recharge() {
typeC.recharge();
}
}
6.测试
public class TestAdapter {
public static void main(String[] args) {
// 苹果手机
Iphone iphone = new Iphone();
// 小米充电器
TypeC xiaoMiRecharge = new XiaoMiRecharge();
// typeC 转换成 lighting
RechargeAdapter rechargeAdapter = new RechargeAdapter(xiaoMiRecharge);
// 充电
iphone.receiveElectricity(rechargeAdapter);
}
}
输出:
总结
- 当一个系统需要使用另一个系统的接口,但两个系统的接口不兼容时,可以使用适配器模式进行接口转换。
- 在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配转换。
- 在数据处理方面,适配器模式可以用于将不同格式的数据适配到一个标准的数据格式上。