适配器模式就是让两个原来不兼容的接口兼容,它由以下三部分组成:
- 目标接口:需要适配的接口
- 适配者:被适配的类
- 适配器:通过继承或引用适配者属性的方式创建的新类
继承实现方式具体代码:
public class ClassAdapter {
interface Target {
void request();
}
class Adaptee {
public void specificRequest() {
System.out.println("适配着业务方法被调用");
}
}
class Adapter extends Adaptee implements Target {
@Override
public void request() {
specificRequest();
}
}
}
如上代码所示,Target 目标接口 request() 方法想调用 Adaptee 类中的 specificRequest() 方法,但两个方法没有任何关系,也就是不适配,此时就可以创建适配器,把两者结合一起工作。
除了继承,还可以通过属性直接调用:
public class ObjectAdapter {
interface Target {
void request();
}
/**
* 被适配类
*/
class Adaptee {
public void specificRequest() {
System.out.println("适配着业务方法被调用");
}
}
class Adapter implements Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void request() {
adaptee.specificRequest();
}
}
}
这里我更倾向使用继承,因为继承可以通过权限修饰符隐藏部分不想暴露的方法或属性,直接使用属性相对耦合更高