设计模式6:适配器模式:充电器实例

  • ListView和RecyclerView都会用到Adpater,这个Adapter的中文意思就是适配器,那么Adapter和适配器模式到底有没有关系了?所以先搞清楚,什么是适配器模式?
  • 适配器模式有三种:类适配器模式、对象适配器模式、接口适配器模式。这篇主要理清楚类适配器模式
  • 手机充电器的实例,代码参考:适配器模式(java实现)。首先,手机充电需要5v的充电器,定义一个5v充电接口:
// 使用5V充电
public interface Charge5V {
    void charging();
}

如果电源是充电宝,可以直接实现充电:

// 充电宝
public class MobilePower implements Charge5V {
    @Override
    public void charging() {
        System.out.println("使用充电宝给手机充电(5V)");
    }
}

测试用充电宝在手机中充电:

// 手机
public class Phone {
    public void charge(Charge5V c) {
        c.charging();
    }

    public static void main(String[] args) {
        Phone phone = new Phone();
        MobilePower mobilePower = new MobilePower();
        phone.charge(mobilePower);
    }
}

  • 现在遇到插座(socket),输出电压是220V:
// 插座
public class Socket {
    public void chargingWith220V() {
        System.out.println("使用插座直接充电(220V)");
    }
}

我们不能改写这个Socket类,就像平时开发中客户端,不能修改服务器提供的接口一样。那怎么让这个Socket类也能充电了?
答案是写一个子类继承Socket类,并且实现5v接口。这个子类就是适配器,对应现实中的充电器。这就是类适配器的精华所在,秒不秒?

// 充电器
public class ChargerAdapter extends Socket implements Charge5V {
    @Override
    public void charging() {
        chargingWith220V();
        System.out.println("转化为5V");
    }
}

有了ChargerAdapter,插座就可以通过适配器给手机充电了:

// 手机
public class Phone {
    public void charge(Charge5V c) {
        c.charging();
    }

    public static void main(String[] args) {
        Phone phone = new Phone();
        ChargerAdapter chargerAdapter = new ChargerAdapter();
        phone.charge(chargerAdapter);
    }
}

给我鼓掌!!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangjin1120

可靠的文章费时费力,希望支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值