适配器模式

适配器模式将一个类的接口,转换成客户期待的另一个接口,适配器让原本接口不兼容的类可以合作无间。

通俗的说,适配器就是连接两个不兼容类的中间件,使他们能够很好的结合在一起工作。

假设有一个系统要接到厂商提供的接口,但是系统接不上厂商提供的接口,所有就产生了适配器,使系统能间接接入到厂商提供的接口。如下图

这里写图片描述

这里写图片描述

这里写图片描述

有了适配器,现有系统跟厂商类就可以很好的兼容工作了,讲了那么多理论的东西。也是应该提供实例了。

我将用手机充电的列子来讲解。大家都知道手机充电需要的电压是5V,不过我们家庭中用的电压是220V,充电器就将220V的电压转化为5V给手机充电,所以充电器就相当于我们这个模式中的适配器。

package com.zengfeng.adapter;
//手机类
public class MobilePhone {

    public void inputPower(V5Power v5power){
        System.out.println("手机已经连接充电器");
        //提供V5电源
        v5power.getV5Power();
        System.out.println("经过一段时间,手机充满电");
    }
}

从上述代码可以看出,手机需要5V的电压充电

v5电压接口,相当于厂商提供的接口

package com.zengfeng.adapter;

//v5电压接口,提供 5V的电压方法
public interface V5Power {

    //提供v5电源
    void getV5Power();

}

220V电压类,相当于现有系统提供的接口

package com.zengfeng.adapter;

public class V220Power {

    public void getV220Power(){
        System.out.println("提供220v的电压");
    }
}

因为220V和5V不匹配,所以要提供适配器匹配,适配器必须要实现厂商提供的接口,这里的适配器V220ToV5Adapter 实现 V5Power接口。

ackage com.zengfeng.adapter;


///将V220转化为V5的适配器,转化为目标,就要实现目标接口,并且提供转化的对象
public class V220ToV5Adapter implements V5Power {

    //提供需要转化为目标的对象
    private V220Power v220Power;
    public V220ToV5Adapter(V220Power v220Power){
        this.v220Power=v220Power;
    }
    //将v220电压转化成V5
    @Override
    public void getV5Power() {
        v220Power.getV220Power();
        System.out.println("经过一系列转化,将220V电压转化成5V进行充电");
    }
}

好了,一切都准备就绪,接下来就要测试了。

package com.zengfeng.adapter;

public class PhoneApadterText {

    public static void main(String[] args) {

        MobilePhone phone =new MobilePhone();
        //将v220转化为V5的适配器
        V220ToV5Adapter v5=new V220ToV5Adapter(new V220Power());

        phone.inputPower(v5);
    }
}

测试结果

这里写图片描述

好了,经过上述讲解,大家应该都学会了这个模式。有了适配器以后,就不要修改现有系统的代码和厂商提供的代码。有什么不懂的话,可以留言。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值