标签搜索

适配器模式

Pop.Kite
2022-02-19 / 0 评论 / 134 阅读 / 正在检测是否收录...

为了给已有的代码添加拓展功能,遵从开闭原则,我们不应该在原有代码上直接修改,应该是添加新的接口实现需求。

比如在中国购买的手机充电头,在欧洲无法使用,需要我们购买转换头进行适配。再或者家用电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

评论 (0)

取消