设计模式:适配器模式

适配器模式

分析

在软件开发中采用类似于电源适配器的设计和编码技巧

角色:

  • Target:目标抽象类,定义客户要用的特定领域的接口
  • Adapter:适配器类,可以调用另一个接口,作为一个转换器,对适配者
  • 和抽象目标类进行适配
  • Adaptee:适配者类,定义了一个存在的接口,这个接口需要适配。

分类:

  1. 类适配器模式,适配器类实现了目标抽象类接口并继承了适配者类,并在目
    标抽象类的实现方法中调用所继承的适配者类的方法。(限制多)
    在这里插入图片描述

  2. 对象适配器模式,适配器类继承了目标抽象类并定义了一个适配者类的对象
    实例,在所继承的目标抽象类方法中调用适配者类的相应业务方法。(应用更广泛)
    在这里插入图片描述

案例:手机充电,通过手机充电器将220V电压适配为5V

使用类适配器

/**
 * 220V交流电(被适配者的角色)
 */
public class Ac {
    public int outputAc(){
        int srcV = 220;
        System.out.println(srcV + "V交流电");
        return srcV;
    }
}
/**
 * 5v直流电(目标对象的角色)
 */
public interface Dc {
 
    int outputDc();
}
public class PhoneAdapter extends Ac implements Dc{
 
    @Override
    public int outputDc() {
        // 获取220V交流电
        int srcV = outputAc();
        // 模拟适配器过程,转换为5v直流电
        int targetV = srcV / 44;
        System.out.println("电压已经适配为" + targetV + "V" );
        return targetV;
    }
}
public class Phone {
    public void charge(Dc dc){
        if(dc.outputDc() == 5){
            System.out.println("电压正常,可以安全充电");
        }else {
            System.out.println("电压异常,危险!");
        }
    }
}
public class Test {
    public static void main(String[] args) {
        new Phone().charge(new PhoneAdapter());
    }
}

在这里插入图片描述

使用对象适配器(重要)

修改手机适配器类

public class PhoneAdapter implements Dc {
 
    private Ac ac;
 
    public PhoneAdapter(Ac ac){
        this.ac = ac;
    }//对象适配过程
 
    @Override
    public int outputDc() {
        // 获取220V交流电
        int srcV = ac.outputAc();
        // 模拟适配器过程,转换为5v直流电
        int targetV = srcV / 44;
        System.out.println("电压已经适配为" + targetV + "V" );
        return targetV;
    }
}

修改测试类

public class Test {
    public static void main(String[] args) {
        new Phone().charge(new PhoneAdapter(new Ac()));
    }
}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值