简介
适配器模式定义:将一个类的接口,转换成客户期望的另一个接口,适配器让原本不兼容的类可以合作无间。
类图:
适配器实现了目标类的接口,但是通过组合,使得适配器持有被适配者的实例,当客户需要执行目标类的方法methodA()时,通过适配器使得真正执行的是被适配者的方法。
实例
Target.java
public interface Target {
void methodA();
void methodB();
}
Adaptee
public interface Adaptee {
void runA();
void runB();
}
AdapteeChild实现了Adaptee
public class AdapteeChild implements Adaptee {
@Override
public void runA() {
System.out.println("这是runA()方法");
}
@Override
public void runB() {
System.out.println("这是runB()方法");
}
}
适配器Adaptor
public class Adaptor implements Target {
private Adaptee adaptee;
//使得所有Adaptee都可以作为被适配者
public Adaptor(Adaptee adaptee){
this.adaptee = adaptee;
}
@Override
public void methodA() {
adaptee.runA();
}
@Override
public void methodB() {
adaptee.runB();
}
}
client:client并不知道此时的Target已经被适配了,使得客户从实现的接口解耦。
public class AdaptorTest {
public static void main(String[] args) {
Adaptee adaptee = new AdapteeChild();
Target target = new Adaptor(adaptee);
target.methodA();
target.methodB();
}
}
//这是runA()方法
//这是runB()方法