❤定义
适配器就是一种适配中间件,它存在于不匹配的二者之间,通过转换将二者匹配。简单点理解就是平常所见的转接头,转换器之类的存在。
❤分类
类适配器、对象适配器、接口适配器
1.类适配器
❤实例场景:将传统的ps2接口转换为热插拔的usb接口
public interface Ps2 {
void isPs2();
}
public interface Usb {
void isUsb();
}
public class Usber implements Usb{
@Override
public void isUsb() {
System.out.println("Usb接口");
}
}
public class Adapter extends Usber implements Ps2 {
@Override
public void isPs2() {
isUsb();// 调用父类Usber的方法
}
}
public class Client {
public static void main(String[] args) {
Ps2 p = new Adapter();
p.isPs2();
}
}
❤输出
Usb接口❤原理分析
继承原理,即通过继承目标接口的子类(Usber)同时实现源接口类(Ps2),调用父类的方法达到适配
2.对象适配器
❤实例场景:将传统的ps2接口转换为热插拔的usb接口
public interface Ps2 {
void isPs2();
}
public interface Usb {
void isUsb();
}
public class Usber implements Usb{
@Override
public void isUsb() {
System.out.println("Usb接口");
}
}
public class Adapter implements Ps2 {
private Usb usb;
public Adapter(Usb usb) {
this.usb = usb;
}
@Override
public void isPs2() {
usb.isUsb();
}
}
public class Client {
public static void main(String[] args) {
Ps2 p = new Adapter(new Usber());
p.isPs2();
}
}
❤输出
Usb接口❤原理分析
组合原理,即通过定义成员变量的方法将目标接口组合到适配器中,调用成员变量的方法达到适配
3.接口适配器
❤实例场景:只想使用某个接口的部分方法,直接实现的话会全部实现
public interface A {
void a();
void b();
void c();
void d();
void e();
void f();
}
public abstract class Adapter implements A {
public void a() {}
public void b() {}
public void c() {}
public void d() {}
public void e() {}
public void f() {}
}
public class Aa extends Adapter {
public void a() {
System.out.println("实现a方法被调用");
}
public void d() {
System.out.println("实现d方法被调用");
}
}
public class Client {
public static void main(String[] args) {
A a = new Aa();
a.a();
a.d();
}
}
❤输出
实现a方法被调用实现d方法被调用
❤原理分析
实现转继承,即源接口(A)通过继承适配器类(抽象类,方法滞空不实现),适配器类再实现目标接口类,达到部分实现的效果
❤适配器的作用
1.重用:可以复用现存的目标类,提高代码重用性
2.解耦:将源接口和目标接口解耦,通过引入一个适配器类来关联两者