适配器分两种:对象适配器,类适配器
UML
对象适配器
类适配器
public interface Target { void request(); }
public class Adaptee { public void doSomeString(){ System.out.println("Apaptee do something"); } }
对象适配器:
public class AdapterB implements Target{ private Adaptee adaptee; public AdapterB(Adaptee adaptee) { super(); this.adaptee = adaptee; } @Override public void request() { adaptee.doSomeString(); } }
类适配器
public class AdapterA extends Adaptee implements Target{ @Override public void request() { // TODO Auto-generated method stub super.doSomeString(); } }
区别:
(1)在Java中不允许多重继承,所以有些情况下必须得用“对象适配器”;比如:一个Adapter要实现一个抽象类的接口,而Adaptee也是一个类,这只能用 “对象适配器”。
(2) 对象适配器比 类适配器更灵活,可以为 对象适配器配置不同子类的Adaptee