Adapter模式又称为适配器模式,顾名思义,适配器的作用就是作为“适配器”,将源转换成目标,生活中最常见的“适配”是充电的操作。适配器主要分为两种:类适配器和对象适配器。我们从这两方面进行简析:
类适配器
类适配器主要是运用继承的思想,拿手机充电为例,我们手机的接口(interface)是3.7V左右,但我们国家的生活电源是220V,我们的目标是要达到3.7V,也就是手机的接口就是我们的目标,首先我们定义一个手机接口(interface)如下:
interface intePhone{
public abstract double in();
}
接下来,我们定义生活电源(类):
public class Lifevoltage{
public double out(){
return 220;
}
}
现在还差充电最关键的部分-------充电器头(变压器),也就是我们的适配器。我们定义如下:
public class Ada extends Lifevoltage implements intePhone{
public double in() {
return ((out()/59.46));
}
}
客户端:
public class client {
public static void main(String[] args) {
Ada ad=new Ada();
System.out.println(ad.in());
}
}
运行结果:
3.699966363942146
我们可以发现, 在适配器类中,我们不仅仅实现了接口还继承调用了充电器头中的方法,但是,在客户端中,我们并不需要识别到适配器,就跟我们生活中充电一样,我们不关心适配器,只关心接口是否可以充电。
对象适配器
还是以手机充电为例,我们对其进行简单的实现,首先我们定义一个抽象类(相当于interface)如下:
abstract class intePhone{
public abstract double in();
}
接下来,我们定义生活电源(类):
public class Lifevoltage{
public double out(){
return 220;
}
}
适配器我们定义如下:
public class Ada extends intePhone {
Lifevoltage d=new Lifevoltage();
public double in() {
return ((d.out()/59.46));
}
客户端:
public class client {
public static void main(String[] args) {
Ada ad=new Ada();
System.out.println(ad.in());
}
}
我们可以发现,我们仅仅将interface改成了抽象类并且继承改为了抽象类,为什么要这样做呢?因为为了能够实例化,才可以调用方法。