在系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器模式,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
适配器的三种实现方式:
1、类适配器。
2、对象适配器。
3、接口适配器。
准备环境代码
package com.adapter;
public class PowerSupply {
protected int outputVoltage = 220;
public int outPut() {
System.out.println("输出220V电!");
return outputVoltage;
}
}
package com.adapter;
public class Computer {
private int inputVoltage = 22;
public void intput(int Voltage) {
if(Voltage == inputVoltage) {
System.out.println("正在充电!");
}else {
System.out.println("无法充电");
}
}
}
类适配器
package com.adapter;
/**
* 类适配器
* @author zhaoyu
*
*/
public class ClassAdapter extends PowerSupply{
public int outPut() {
System.out.println("输出" + outputVoltage/10 + "电压!");
return outputVoltage/10;
}
}
对象适配器
package com.adapter;
public class ObjectAdapter {
PowerSupply powerSupply = new PowerSupply();
public int outPut() {
System.out.println("输出" + powerSupply.outputVoltage/10 + "电压!");
return powerSupply.outputVoltage/10;
}
}
接口适配器
package com.adapter;
public interface Iadapter {
int out5V(int Voltage);
int out10V(int Voltage);
int out22V(int Voltage);
}
package com.adapter;
public class InterfaceAdapter implements Iadapter{
@Override
public int out5V(int Voltage) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int out10V(int Voltage) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int out22V(int Voltage) {
System.out.println("输出" + Voltage/10 + "电压!");
return Voltage/10;
}
}
测试代码
package com.adapter;
public class User {
public static void main(String[] args) {
Computer computer = new Computer();
PowerSupply power = new PowerSupply();
Iadapter apadter = new InterfaceAdapter();
computer.intput(apadter.out22V(power.outputVoltage));
}
}