为了给已有的代码添加拓展功能,遵从开闭原则,我们不应该在原有代码上直接修改,应该是添加新的接口实现需求。
比如在中国购买的手机充电头,在欧洲无法使用,需要我们购买转换头进行适配。再或者家用电220V无法直接给手机充电,需要电源适配器转换电压。
//设备充电接口
public interface DevicePower {
void provide5VPower();
}
//家用电输出接口
public interface ElectricityPower {
void provide220VPower();
}
//家用电输出实例
public class Electricity implements ElectricityPower {
@Override
public void provide220VPower() {
System.out.println("输出220V交流电");
}
}
//适配器
public class DeviceAdapter implements DevicePower {
private final ElectricityPower electricity;
public DeviceAdapter(ElectricityPower electricity) {
this.electricity = electricity;
}
@Override
public void providePower() {
electricity.charge();
System.out.println("适配器转换了电压");
}
}
//设备
public class Device {
public void charged(DevicePower adapter){
adapter.provide5VPower();
System.out.println("设备充电中···");
}
}
//一个充电动作
public static void adapterExample(){
Device device = new Device();
Electricity electricity = new Electricity();
DeviceAdapter adapter = new DeviceAdapter(electricity);
device.charged(adapter);
}
//输出
输出220V交流电
适配器转换电压···
设备充电中···
评论 (0)