/**
* 适配器模式
* 将一个类的接口转换成客户希望的另一个类的接口
* Adapter模式使得原来由于接口不兼容不能一起工作的类可以一起工作
* 就像220V电源不能直接连接手机,需要手机充电适配器才行
* 对象适配器模式
*
* 适配器模式的应用场景
* 1、当你希望使用某些现有类,但其接口与您的其他代码不兼容是,请使用适配器类
* 2、当你希望重用几个现有的子类,这些子类缺少一些不能添加到超类中的公共功能时,请使用改模式
*/
public class TestAdapter {
public static void main(String[] args) {
Adaptee adaptee = new Adaptee();
Target target=new Adapter(adaptee);
target.output5V();
}
}
class Adaptee{
public int output220v(){
return 220;
}
}
//输出5v的电压
interface Target{
int output5V();
}

class Adapter implements Target {

private Adaptee adaptee;

public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}

@Override
public int output5V() {
int i = adaptee.output220v();
System.out.println(String.format("原始电压:%d--> 输出电压:%d", i , 5));
return 5;
}
}
/**
* 类适配器模式
* 缺点:对接口有污染,这里可以看到output220v()方法,对于手机适配器是不合适的
*/
public class TestAdapter2 {

public static void main(String[] args) {
Adpater adpater=new Adpater();
adpater.output5V();
}

}

//类的适配器模式
class Adpater extends Adaptee implements Target{

@Override
public int output5V() {
int i=output220v();
System.out.println(String.format("这次的输入电压%d,输出电压:%d",i,5));
return 5;
}
}