1、适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
2、当系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目地是使控制范围之外的一个原有对象与某个接口匹配。
适配器模式主要有,类适配器和对象适配器模式。
3、适配器模式结构图
4、简单代码实现
target,客户所期待的接口、抽象类或具体类。
public class Target {
public void request() {
System.out.println("普通的请求");
}
}
adaptee(需要适配的类)
public class Adaptee {
public void specificRequest() {
System.out.println("特殊的请求");
}
}
Adapter类,在内部包装一个Adatee对象,将源接口转换为目标接口。
public class Adapter extends Target {
private Adaptee adaptee=new Adaptee();
//表面调用request实际调用specificRequest
@Override
public void request() {
// TODO Auto-generated method stub
adaptee.specificRequest();
}
}
客户端代码:
public class Client {
public static void main(String[] args) {
Target target=new Adapter();
target.request();
}
}
5、何时使用
1、使用一个已存在的类,如果他的接口,也就是他的方法和你的要求不同时,就应该考虑适配器模式。
2、两个类所做的事相同或相似,但是具有不同的接口时要使用它。
3、客户端可以统一调用同一接口,可以更简单、更直接、更紧凑。
4、双方都不太容易修改时再使用适配器模式适配。
4.1 事后控制不如事中控制,事中控制不如事前控制