1.概念:
适配器模式(Adapter Pattern)[GOF95]把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
2.两种形式
a.类的适配器模式 b.对象的适配器模式
3.模拟问题:
现在假设我们的程序已经设计了接口Request接口,但是现在有一个特殊的接口SpecificRequst能更好的完成我们的功能,但是它和我们现有的Request接口不匹配。那我们如何将它们一起工作呢?看下面的实例:
3.图示实例1:a.类的适配器模式
实例代码:
目标角色:
public interface Target {
public void request();
}
源角色:
public class Adaptee {
public void specificRequest(){
System.out.println("实现所需功能");
}
}
适配器角色:
public class ClassAdapter extends Adaptee implements Target {
public void request() {
this.specificRequest();
}
}
用户角色:
public class TestClassAdapter {
public static void main(String args[]){
ClassAdapter adapter = new ClassAdapter();
adapter.request();
}
}
运行结果:
引用
实现所需功能
3.图示实例2:b.对象的适配器模式
实例代码:
目标角色,源角色代码不变。
适配器角色:
public class ObjectAdapter implements Target {
private Adaptee adaptee;
public ObjectAdapter(Adaptee adaptee){
this.adaptee = adaptee;
}
public void request() {
adaptee.specificRequest();
}
}
用户角色:
public class TestOjbectAdapter {
public static void main(String arg[]){
Adaptee adaptee = new Adaptee();
ObjectAdapter adapter = new ObjectAdapter(adaptee);
adapter.request();
}
}
运行结果:
引用
实现所需功能