interface Adapter {//适配器类
int convert_5v();//装换成5V
}
6.2 创建被适配角色
被适配角色,一般是已存在的类,需要适配新的接口。生活中的220V电源无处不在:
public class Electric {// 电源
public int output_220v() {//输出220V
return 220;
}
}
6.3 创建具体适配器
我们需要一个具体适配器,这个适配器就是变压器,能够将220V转为5V输出:
public class PhoneAdapter implements Adapter {//手机适配器类
private Electric mElectric;//适配器持有源目标对象
public PhoneAdapter(Electric electric) {//通过构造方法传入对象
mElectric = electric;
}
@Override
public int convert_5v() {
System.out.println("适配器开始工作:");
System.out.println("输入电压:" + mElectric.output_220v());
System.out.println("输出电压:" + 5);
return 5;
}
}
6.4 客户端测试
public void test() {
Electric electric = new Electric();
System.out.println("默认电压:" + electric.output_220v());
Adapter phoneAdapter = new PhoneAdapter(electric);//传递一个对象给适配器
System.out.println("适配转换后的电压:" + phoneAdapter.convert_5v());
}
默认电压:220
适配器开始工作:
输入电压:220
输出电压:5
适配转换后的电压:5
说明
上面的例子就是对象适配器模式,适配的源目标对象需要传递给适配器。,下面扣展类适配器
扩展
类适配器模式实现
类适配器只要是通过继承源目标类来实现
创建适配器接口
interface Adapter {//适配器类
int convert_5v();//装换成5V
}
创建被适配角色
public class Electric {// 电源
public int output_220v() {//输出220V
return 220;
}
}
创建具体适配器
public class PhoneAdapter extends Electric implements Adapter {//通过继承源目标类的方式,不持有源目标对象
@Override
public int convert_5v() {
System.out.println("适配器开始工作:");
System.out.println("输入电压:" + output_220v());
System.out.println("输出电压:" + 5);
return 5;
}
}
客户端测试:
public void test() {
Adapter phoneAdapter = new PhoneAdapter();
System.out.println("适配转换后的电压:" + phoneAdapter.convert_5v());
}