定义:适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。
使用场景:
1 系统需要使用现有的类,而这些类的接口不符合系统的需要。
2 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
3 需要一个统一的输出接口,而输入端的类型不可预知。
类型:类适配者模式、对象适配者模式
类适配者模式:主要思想就是继承,令适配器(adpater)继承被适配者(adaptee)的接口,再来实现目标(target)
package AdapterDesign;
//被适配者
public class Adaptee {
public void adpateeRequest() {
System.out.println("被适配者的方法");
}
}
package AdapterDesign;
public interface Target {
void request();
}
package AdapterDesign;
public class Adapter extends Adaptee implements Target {
@Override
public void request() {
// TODO Auto-generated method stub
super.adpateeRequest();
}
}
package AdapterDesign;
public class ConcreteTarget implements Target {
@Override
public void request() {
// TODO Auto-generated method stub
System.out.println("ConcreteTarget 目标方法");
}
}
package AdapterDesign;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Target target1=new ConcreteTarget();
target1.request();
Adapter adapter=new Adapter();
adapter.request();
}
}
结果:
ConcreteTarget 目标方法
被适配者的方法
UML类结构图
对象适配者:主要通过组合方式,adapter对象内含有adaptee的对象。
和类适配器基本一样,只有adapter不一样:
package AdapterDesign.ObjectAdapter;
public class Adapter implements Target {
Adaptee adaptee=new Adaptee();
@Override
public void request() {
// TODO Auto-generated method stub
adaptee.adpateeRequest();
}
}