持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
上一篇文章我们讲的是设计模式的第二种细分模式:对象适配器模式,这篇文章我们讲最后一种适配器模式:接口适配器模式。
适配器模式使用举例
对象适配器模式
接口适配模式同时也秉承着适配器模式的相关理念,即内部依旧包含源头、适配类、目标三个角色。
对比前两种细分的适配器模式我们依旧可以推断出,接口适配器模式是以接口为着手点的。
接口适配器模式相比于前两种来说更加灵活多变,就好比万能钥匙、万能充、万能扳手一样,在某个领域可以实现很多功能。接下来我们还是拿万能充电源来举例子,不论目标要求多少V,我们都可以提供。上代码。
首先,定义源头,这里我们定义一个常用的220V 电压和安全的36V 电压,但是在定义两种具体电压之前,先定义一个抽象电源类,并设置默认值为220V。代码如下:
public abstract class Power {
public int getVoltage() {
return 220;
}
}
定义具体电源类:
(这里由于继承了抽象类,默认是220V,所以不写override 方法,但是日常开发中最好覆盖)
public class Power220V extends Power {
}
public class Power36V extends Power {
@Override
public int getVoltage() {
return 36;
}
}
以上完成了源头类的定义,接下来是第二个关键角色:目标。
public interface Voltage4V {
int getVoltage4V();
}
最后是主角,适配器类:
public class AdapterPower implements Voltage4V {
private Power power;
public AdapterPower(Power220V power) {
this.power = power;
}
public AdapterPower(Power36V power) {
this.power = power;
}
@Override
public int getVoltage4V() {
int divisor = power.getVoltage() / 5;
return power.getVoltage() / divisor;
}
}
(以上解释一下override 中的方法,因为我们是根据构造方法得到的