将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(GoF)
场景
相信很多人都知道什么是显卡,也有很多人知道显卡的本名——图形适配器。恩,是的,正好这回说说Apater模式,就拿显卡来例子来分析一下Adapter模式。
我们知道显示器(Client)是用来显示图形的,它是不能显示数据,它只能够接受来自图形发送设备Target的信号。可是我们手头上只有CPU(Adaptee)这个产生各种描述图形的数据的数据发送器。我们需要将这些数据让显示器进行显示,可是这两个部件却是不兼容的。于是我们需要一个中间设备,它能够将CPU“适配”于显示器,这便是我们的显卡——图形适配器(Adapter)。
java 代码
// 图形发送设备
public class Target {
publicString request() {
return "Graphic sender";
}
}
//显示器
public classClient {
public static void main(String[] args) {
Target target = new Targete();
System.out.println(target.request());
}
}
可是我们的CPU(Adaptee)只能输出0/1数据,他是个计算器,而不是图形发送设备(Target)。
// 图形发送设备
public class Target {
}
可是我们的CPU(Adaptee)只能输出0/1数据,他是个计算器,而不是图形发送设备(Target)。
java 代码
//CPU
public classAdaptee {
public String getData() {
return "CPU data";
}
}
这个时候我们的显卡(Adapter)的作用便体现出来了,它负责对CPU进行适配,通过将CPU传过来的数据转换成图形信号,从而将CPU伪装成一个图形发送设备。
这个时候我们的显卡(Adapter)的作用便体现出来了,它负责对CPU进行适配,通过将CPU传过来的数据转换成图形信号,从而将CPU伪装成一个图形发送设备。
java 代码
//显卡,即我们的适配器
public classAdapter extends Target {
// 被代理的设备
private Adaptee apt = null;
public Adapter(Adaptee apt) {
this.apt = apt;
}
public String request() {
return apt.getData();
}
}
这样,我们的电脑的显示流程就变成CPU-显卡-显示器:
这样,我们的电脑的显示流程就变成CPU-显卡-显示器:
java 代码