原理:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。
角色:目标抽象类(Target): 客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
适配者类(Adaptee): 需要适配的类或适配者类。
适配器类(Adapter): 通过包装一个需要适配的对象,把原接口转换成目标接口。
实现方式:
类适配器模式:适配器类实现目标抽象类接口,并继承了适配者的类,在适配器类的request()方法中调用所继承的适配者类中对应的方法。适配者与适配器是继承关系。
对象适配器模式:适配器类继承了目标抽象类,并包装了适配者的实例,适配者与适配器是关联关系。
public interface Target {
public void request();
}
public class Adaptee {
public void specialRequest(){
System.out.println("this is special request");
}
}
//类适配器
public class ClassAdapter extends Adaptee implements Target{
@Override
public void request() {
specialRequest();
}
}
//对象适配器
public class ObjectApdater implements Target{
Adaptee adaptee = new Adaptee();
@Override
public void request() {
adaptee.specialRequest();
}
}
缺省适配器模式:(单接口适配器模式)当不需要实现一个接口所提供的所有方法时,可先设计一个抽象类实现该接口,并为接口中的每个方法提供一个默认实现(空方法),那么抽象类的子类可以有选择性的覆盖父类的某些方法来实现需求。它适用于不想使用一个接口中的所有方法的情况。
双向适配器:适配器中同时包含对目标类和适配器类的引用,适配者通过它调用目标类中的方法,目标类也可以通过它调用适配器类中的方法。
适配器模式(Adapter)
原文:http://www.cnblogs.com/elain/p/4314397.html