【每天一个java设计模式(六)】 - 适配器模式

当某种业务功能已经实现,但它们与当前系统的接口不兼容,如果重新开发成本又很高,这时用适配器模式能很好地解决这些问题。

适配器模式是作为两个不兼容的接口之间的桥梁,属于结构型模式,它结合了两个独立接口的功能。

将一个类的接口转换成需要的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

适配器模式的实现:

假设有两款不同年代的电脑,一台功率100W,另一台功率200W。但是现在只有一个100W的充电器,我们要让它为200W的电脑充电,这时候我们就需要创建一个适配器来完成这个工作。

1. 创建一个充电接口

该提供一个按类型充电的方法。

//提供一个按类型充电的方法
public interface Charge {
    public void charge(String type);
}

2. 创建100W充电器接口

在这个接口中,提供一个方法可以为100W的电脑充电。

//100W充电器接口
public interface W100 {
    public void charge100W();
}

3. 创建100W充电接口的实现类

//100W充电的实现类
public class W100Impl implements W100 {
    @Override
    public void charge100W() {
        System.out.println("使用100W充电器给电脑充电");
    }
}

4. 创建适配器

//适配器
public class ChargeAdapter implements Charge {
    W100 w100;

    public ChargeAdapter(String type){
        if(type.equals("100w")){
            w100 = new W100Impl();
        }
    }

    @Override
    public void charge(String type) {
        w100.charge100W();
    }
}

5. 创建200W充电器实体

//适配器
//200w充电器
public class W200 implements Charge {

    ChargeAdapter chargeAdapter;
    @Override
    public void charge(String type) {
        if(type.equals("200w")){
            System.out.println("200W充电器正常充电");
        }else if(type.equals("100w")) {
            chargeAdapter = new ChargeAdapter(type);
            chargeAdapter.charge(type);
        }else{
            System.out.println("功率不兼容,充电失败!!!");
        }
    }
}

6. 测试充电结果

public class AdapterMain {
    public static void main(String[] args) {
        W200 w200 = new W200();

        //通过适配器使用100w充电器给200w电脑充电
        System.out.print("过适配器使用100w充电器给200w电脑充电:");
        w200.charge("100w");
        //通过适配器使用300w充电器给200w电脑充电
        System.out.print("过适配器使用300w充电器给200w电脑充电:");
        w200.charge("300w");
    }
}

在这里插入图片描述
从打印结果中我们可以看到,当使用100w充电器给200w电脑充电时,充电成功了;而使用300W充电器时,提示我们功率不兼容,这是因为我们只提供了100W的适配器,没有300W的适配器。如果想让300W的充电器给200W的电脑充电,那么就只需要按照上述步骤再添加一个300W适配器即可。

到此,我们实现了适配器模式,成功通过使用适配器让200W电脑兼容100W充电器,即使原本由于接口不兼容而不能一起工作的那些类能一起工作。

前面几节的内容供大家参考:

下一节:
代理模式: 【每天一个java设计模式(七)】 - 代理模式模式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

1 + 1=王

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值