假设当前电源电压(src)为220V,而手机充电口需要的电压(dst)是5V,使用适配器将电压进行转换
Adapter类通过继承src类,实现dst类接口,在dst接口中调用src中的方法,完成src->dst的适配
/***
* @author shaofan
* @Description 类适配器解决电压问题
*/
public class ClassAdapter {
public static void main(String[] args) {
Phone phone = new Phone();
phone.charging(new VoltageAdapter());
}
}
class Phone{
public void charging(Voltage5V voltage5V){
System.out.println("充电电压为"+voltage5V.output5V()+"V");
}
}
class Voltage220V{
int output220V(){
return 220;
}
}
interface Voltage5V{
int output5V();
}
class VoltageAdapter extends Voltage220V implements Voltage5V{
@Override
public int output5V() {
//将源电压转为目标电压5V
int src = output220V();
int dst = src/44;
return dst;
}
}
/***
* @author shaofan
* @Description 对象适配器解决电压问题
*/
public class ObjectAdapter {
public static void main(String[] args) {
Phone phone = new Phone();
phone.charging(new VoltageAdapter(new Voltage220V()));
}
}
class Phone{
public void charging(Voltage5V voltage5V){
System.out.println("充电电压为"+voltage5V.output5V()+"V");
}
}
class Voltage220V{
int output220V(){
return 220;
}
}
interface Voltage5V{
int output5V();
}
class VoltageAdapter implements Voltage5V {
private Voltage220V voltage220V;
public VoltageAdapter(Voltage220V voltage220V){
this.voltage220V = voltage220V;
}
@Override
public int output5V() {
//将源电压转为目标电压5V
int src = voltage220V.output220V();
int dst = src/44;
return dst;
}
}
/***
* @author shaofan
* @Description 接口适配器解决电压问题
*/
public class InterfaceAdapter {
public static void main(String[] args) {
Phone phone = new Phone();
phone.charging();
}
}
class Phone{
public void charging(){
// 在调用时只对需要用到的方法进行实现
AbstractAdapter adapter = new AbstractAdapter() {
@Override
public int output5V() {
return 5;
}
};
System.out.println("充电电压为"+adapter.output5V()+"V");
}
}
interface Voltage{
int output5V();
int output3V();
}
/***
* 适配器对接口中的方法进行空实现
*/
abstract class AbstractAdapter implements Voltage{
@Override
public int output5V() {
return 0;
}
@Override
public int output3V() {
return 0;
}
}