应用场景
解决由于接口不兼容而无法一起工作的类,使其可以共同工作,主要是将适配的类的API转换成目标类的API
UML类图
通过将Adapter类继承源类(Adaptee类)实现Target接口,使得将Target和Adaptee联系起来
实现代码
- Target接口
public interface Target {
//这是源类Adapteee没有的方法
public void Request();
}
- 源类Adaptee
public class Adaptee {
public void SpecificRequest(){
}
}
- 创建适配器类 Adapter
//适配器Adapter继承自Adaptee,同时又实现了目标(Target)接口。
public class Adapter extends Adaptee implements Target {
//目标接口要求调用Request()这个方法名,但源类Adaptee没有方法Request()
//因此适配器补充上这个方法名
//但实际上Request()只是调用源类Adaptee的SpecificRequest()方法的内容
//所以适配器只是将SpecificRequest()方法作了一层封装,封装成Target可以调用的Request()而已
@Override
public void Request() {
this.SpecificRequest();
}
}
- 最后调用目标类,通过Adapter类调用所需要的方法从而实现目标
public class AdapterPattern {
public static void main(String[] args){
Target mAdapter = new Adapter();
mAdapter.Request();
}
}