设计模式之适配器模式

定义

当一个对象或类的接口不能匹配用户所期待的接口时,适配器就可以充当中间转换的角色,以达到兼容用户接口的目的,同时适配器也实现了客户端与接口的解耦,提高了组件的可复用性。

举一个生活中的例子,在很长一段时间里,我们的手机充电接口是MicroUSB,随着时代的发展,新买的手机充电接口已经更换为TypeC接口了,这时以前的充电线就无法继续时使用了。下面我们用代码来描述这样一种冲突。

代码实现

MicroUSB接口,charge充电方法

public interface MicroUSB {
    void charge();
}

TypeC 接口,同样的charge充电方法

public interface TypeC {
    void charge();
}

Phone类实现了TypeC接口,因此只能通过TypeC接口来进行充电。

public class Phone implements TypeC {
    @Override
    public void charge() {
        System.out.println("给TypeC接口手机充电");
        System.out.println("手机开机");
    }
}

为了不破坏现有的手机充电接口,我们需要一个适配器来做接口转换,有了它我们便可以使用MicroUSB接口为手机充电了。

对象适配器,适配器类包含被适配的对象。如果我们仅需要适配特定的类,我们可以使用类适配器模式,例如我们只需要适配Phone类

public class Adapter implements MicroUSB{

    /**
     * 被适配的设备
     */
    private TypeC typeCDevice;

    public Adapter(TypeC typeCDevice) {
        this.typeCDevice = typeCDevice;
    }

    @Override
    public void charge() {
    	System.out.println("使用MicroUSB充电");
        // 调用被适配的设备的充电方法
        typeCDevice.charge();
    }
}

客户端,使用MicroUSB接口给TypeC接口的手机充电

public class Client {
    public static void main(String[] args) {
        TypeC typeCDevice = new Phone();
        MicroUSB microUSBDevice = new Adapter(typeCDevice);
        microUSBDevice.charge();
        // 输出结果
        // 使用MicroUSB充电
        // 给TypeC接口手机充电
        // 手机开机

        MicroUSB microUSBPhone = new Adapter2();
        microUSBPhone.charge();
        // 输出结果
        // 使用MicroUSB充电
        // 给TypeC接口手机充电
        // 手机开机
    }
}

可以看到,当我们引入了适配器之后,我们就可以愉快的使用MicroUSB接口为TypeC接口的手机进行充电了,完美的解决了接口之间的冲突。

以上就是适配器模式的所有内容,我将持续更新设计模式,欢迎大家一起交流😁

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值