将一个类的接口转成另一种接口,使原本不兼容的类可以兼容
source (220v)-- adapter — dst(5V)
方法一、类适配
adapter类,继承source,实现dst,实现src-dst
public class Phone {
void charging(IVolt5V volt5V) {
if(volt5V.Output5v() == 5){
System.out.println("charging--------");
}else{
System.out.println("not charging--------");
}
}
}
source (220v)
public class Volt220V {
public int Output220V() {
System.out.println("输入---220V");
return 220;
}
}
目标接口
public interface IVolt5V {
public int Output5v();
}
源转为目标的适配器
public class VoltAdapter extends Volt220V implements IVolt5V {
@Override
public int Output5v() {
int srcV = Output220V();
int dstV = srcV / 44;
System.out.println("输出5v-----");
return dstV;
}
}
public class AdapterClient {
public static void main(String[] args) {
Phone phone = new Phone();
phone.charging(new VoltAdapter());
}
}
方法二、对象适配模式:用组合代替继承;适配器由继承的方式,改为构造方法传人
public class AdapterClient {
public static void main(String[] args) {
Phone phone = new Phone();
phone.charging(new VoltAdapter2(new Volt220V()));
}
}
public class VoltAdapter2 implements IVolt5V {
Volt220V volt220V;
public VoltAdapter2(Volt220V volt220V) {
this.volt220V = volt220V;
}
@Override
public int Output5v() {
int srcV = volt220V.Output220V();
int dstV = srcV / 44;
System.out.println("输出5v-----");
return dstV;
}
}