适配器模式主要分三类:(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"); } }