适配器模式,举个例子,给手机充电。将220V转换韦5V
具体代码如下:
//适配对象,变成接口或抽象类
public interface Voltage5V {
public int output5V();
}
//被适配的类
public class Voltage220V {
public int output220V(){
int src = 220;
System.out.println("电压为: "+src);
return src;
}
}
//适配器类
public class VoltageAdapter implements Voltage5V{
private Voltage220V voltage220V;
//通过构造器传入一个voltage220V实例对象
public VoltageAdapter(Voltage220V voltage220V) {
this.voltage220V = voltage220V;
}
@Override
public int output5V() {
int dst = 0;
if(null != voltage220V){
int src = voltage220V.output220V();//对象实例不为空,我们获取被适配的对象的电压
dst = src / 44;
System.out.println("适配完成,输出的适配电压为: " + dst);
}
return dst;
}
}
//使用电压的对象
public class Phone {
public Phone() {
}
public void charging(Voltage5V ivoltage5V){
if (ivoltage5V.output5V() == 5) {
System.out.println("电压5伏,可以充电");
}else if(ivoltage5V.output5V()>5){
System.out.println("电压大于5伏,不可以充电");
}
}
}
最后测试类:
//对象适配器
//根据合成复用原则,使用组合替代原来的继承,所以该模式解决类适配器必须继承src的局限性,也不再要求dst必须是接口
public class TestClient {
public static void main(String[] args) {
Phone phone = new Phone();
phone.charging(new VoltageAdapter(new Voltage220V()));
}
}
输出结果如下:
电压为: 220
适配完成,输出的适配电压为: 5
电压5伏,可以充电