适配器分两种:对象适配器,类适配器
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