适配器模式的优势:
适配器模式可以将一个类的接口和另一个类接口匹配起来,使用的前提是你不能或不想修改原接口。
关于何时使用适配器模式:
做好前期设计的同时,接口不相同的时候,第一时间不应该考虑用适配器,而是考虑通过重构统一接口。在双方都不容易修改接口的时候再去使用适配器模式。例如:设计一个系统时使用的第三方开发组件,这个组件的接口与系统接口不相同,这时不用为了迎合它去改动自己的接口,这种情况下,可以用适配器模式。
类适配器:
样例:
class Adaptee {//原实体类
public void specialRequest(Target t) {
System.out.println(t.request());
}
}
class Adap{//目标实体类
public int provide() {
return 20;
}
}
class Adapter implements Target {//适配器
private Adap adap;
public Adapter(Adap a) {
this.adap=a;
}
@Override
public int request() {
adap.provide();
return 2;
}
}
interface Target {//对接接口
public int request();
}
public class Client {//将20转为2输出,自定义一个接口实现对接,不改变两边类代码
public static void main(String[] args) {
Target t = new Adapter(new Adap());
Adaptee tee=new Adaptee();
tee.specialRequest(t);
}
}