生活中我们常用的手机或者电脑充电器就是一种适配器,手机需用5V的接口来充电,而家庭用电是220V的交流电,所以这就需要适配器在中间转换一下。下面就以这个例子来说明一下是什么适配器模式。
首先创建我们的家庭用的220V的电,
/**
* 220V的交流电
* */
public class V220 {
public void use220V() {
System.out.println("220V的交流电正在被使用...");
}
}
创建手机可以使用的5V电的接口,
/**
* 手机可以使用的5伏电源接口
* */
public interface V5 {
public void use5V();
}
那么,现在我们就需要一个电源适配器,它可以使用220的电源,同时又提供一个可以使用5V电源的方法,这个方法需要实现手机5V电源的接口,手机与适配器一致才行,所以我们的适配器就实现了5V电源的接口以供手机调用。
/**
* 220V转5伏 适配器
* */
public class V220ToV5Adapter implements V5 {
private V220 v220;
public V220ToV5Adapter(V220 v220) {
this.v220 = v220;
}
@Override
public void use5V() {
v220.use220V();
}
}
至此,我们的适配器就完成了,手机使用此适配器就可以充电了,
/**
* 手机类,通过220转5伏的适配器来充电
* */
public class Phone {
public static void main(String[] args) {
V220 v220 = new V220();
V220ToV5Adapter adapter = new V220ToV5Adapter(v220);
System.out.println("使用5V的接口来充电");
adapter.use5V();
System.out.println("手机正在充电");
}
}
打印结果:
使用5V的接口来充电
220V的交流电正在被使用...
手机正在充电
总结
优点:解决了使用者与被使用者接口不一致的问题。
缺点:降低了代码的可读性。