适配器模式主要分三类:(1)类适配器模式(2)对象适配器模式(3)接口适配器模式
类适配器(通过继承来实现适配器)与对象适配器(通过组合来实现适配器)的使用场景一致,只是实现手法稍有区别。主要是处理当存在两个接口A,B。其中B接口有我们调用的b(),但是我们又必须通过访问接口A去调用B的b()。
接口适配器模式(通过抽象类来实现适配器)。处理有一个接口A里面有a,b,c,d等方法,但是我们只想具体实现某个或几个方法。
类适配器的实现:
接口A:
public interface A {
void a();
}
接口B:
public interface B {
void b();
}
B的实现类
public class BClass implements B {
@Override
public void b() {
System.out.println("B");
}
}
适配器类:
public class Adapter extends BClass implements A {
@Override
public void a() {
b();
}
public static void main(String[] args){
Adapter adapter=new Adapter();
adapter.a();
}
}
对象适配器实现:
接口A,B和上述一样
适配器类:
public class Adapter implements A {
private B b;
public Adapter(B b) {
this.b = b;
}
@Override
public void a() {
b.b();
}
public static void main(String[] args){
Adapter adapter=new Adapter(new B() {
@Override
public void b() {
System.out.println("B");
}
});
adapter.a();
}
}
接口适配器模式实现:
接口A:
public interface A {
void a();
void b();
void c();
void d();
void e();
}
适配器:
public abstract class Adatper implements A{
@Override
public void a() { }
@Override
public void b() { }
@Override
public void c() { }
@Override
public void d() { }
@Override
public void e() { }
}
A实现
public class AClass extends Adatper{
@Override
public void a() {
System.out.println("AAAAAA");
}
}