模式简介
适配器模式就是将一个类的接口转换成客户希望的另一个接口,使得我们可以调用一些不兼容的接口,更好的实现了代码的复用。
举例
我们国家用的是220V的电压,美国使用的是110V的电压,假如一个美国笔记本电脑需要在中国使用,此时就需要一个电源适配器,不管是多少伏的电压,都能把电压变成需要的电压。
// 电源抽象接口,
public interface Power {
/*
* @Param [voltage] 电压
* @return void
* @Date 2020/7/20
**/
void canUse(int voltage);
}
// 美国电源
public class USAPower implements Power{
public USAPower() {
System.out.println("美国电源使用110V电压");
}
@Override
public void canUse(int voltage) {
if(voltage == 110) {
System.out.println("电压符合,可以使用。。。");
}else {
System.out.println("电压不符合,无法正常使用。。。");
}
}
}
如果给美国电源提供一个220V电压:
public class AdapterTest {
public static void main(String[] args) {
Power power = new USAPower();
power.canUse(220);
}
}
打印结果:
美国电源使用110V电压
电压不符合,无法正常使用。。。
此时需要为美国的电源提供一个电源适配器:
public class USAPowerAdapter implements Power{
// 适配器内部对美国电源进行包装
private USAPower usaPower = new USAPower();
@Override
public void canUse(int voltage) {
if(voltage != 110) {
System.out.println("电源适配器将电压转为110V...");
voltage = 110;
}
usaPower.canUse(voltage);
}
}
此时再提供220V的电压:
public class AdapterTest {
public static void main(String[] args) {
Power powerAdapter = new USAPowerAdapter();
powerAdapter.canUse(220);
}
}
打印结果:
美国电源使用110V电压
电源适配器将电压转为110V...
电压符合,可以使用。。。
使美国电源在220V电压下也可以正常工作,实现了适配的效果。
何时使用
- 当一个接口的数据和行为都正确时,但接口不符
- 使用一个已经存在的类,并且类的方法与你的要求不同,且该类也不太容易去直接修改。