适配器模式:将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。
由上图可以看出来当我们客户端想要去访问Adaptee时发现与我们想要的模式不一样,这时候就需要有一个接口通过将adaptee进行包装转换成我们想要的目标接口;
Adaptee类:
public class Adaptee {
public void specificRequest() {
System.out.println("this is a specifical interface!!");
}
}
Target接口:
public interface Target {
void request();
}
Adapter 类:
public class Adapter implements Target{
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void request() {
adaptee.specificRequest();
System.out.println("convert to general request");
}
}
Client类:
import org.junit.Test;
public class Client {
@Test
public void adapterTest() {
Target target = new Adapter(new Adaptee());
target.request();
}
}
使用场景:
在使用一个已经存在的类,如果他的接口或者方法和你的要求不相同时,就因该考虑用适配器模式
以上是适配器为对象适配器,就是在适配器中需要依赖一个已知的被适配者的对象,还有一种是类适配器,就是适配器继承了背适配者,而且实现了适配器的接口,这样适配器就可以同时支持两种接口