java设计模式--适配器模式

基本概念

生活中的例子

例如我们平时使用的笔记本电脑,可能笔记本电脑的工作电压是20V,但我们一般的家庭用电是220V,这时候电脑在充电的时候就需要一个电源适配器来把220V的电脑转化为20V的电压了。这个电源适配器也别称为充电器或变压器;

我们想用苹果的充电线给安卓的手机充电时。由于两者的接口不一样,会导致充电口无法匹配。这时,我们就需要适配器,将安卓的充电接口转化为苹果的接口,这样,就可以进行充电了;

主要是在新接口和老接口之间进行适配;将一个类的接口转换成客户希望的另一个接口;可以分为类的适配器和对象适配器;

基本代码演示

对象适配器:我们以上面的苹果充电线给安卓手机充电为例:

Target类:

public class Android {
    public void isAndroid(){
        System.out.println("这是一个只接受安卓充电线的插口");
    }
}

Adaptee类:

public class Iphone {
    public void isIphone(){
        System.out.println("这是一个适配苹果充电线的插口");
    }
}

Adapter类:作为中间件,进行适配

//适配器,作为中间件,把他们进行适配
public class Adapter extends Android{
    private Iphone iphone;
    public Adapter(Iphone iphone){
        this.iphone = iphone;
    }
    @Override
    public void isAndroid() {
        iphone.isIphone();
    }
}

测试类:

public class Demo {
    public static void main(String[] args){
        Android android = new Adapter(new Iphone());
        //调用的是安卓的接口,但实际上
        //确实一个可以接受苹果充电器的接口
        android.isAndroid();
    }
}

对于对象的适配器模式,实际上就是通过一个适配器类,把目标类和需要被适配的类进行组合;所以适配器类Adapter一般需要继承或实现Targert,并且还得持有Adaptee的实例引用;

类适配器:通过继承来实现;

Target接口类:

interface Android {
    void isAndroid();
}

Adaptee类:

public class Iphone {
    public void isIphone(){
        System.out.println("这是一个适配苹果充电线的接口");
    }
}

dapter类:继承Adaptee,实现Target:

public class Adapter extends Iphone implements Android{
    @Override
    public void isAndroid() {
        isIphone();
    }
}

测试类:

public class Demo {
    public static void main(String[] args){
        Android android = new Adapter();
        android.isAndroid();
    }
}

对比:

对象适配器模式通过组合来实现适配器功能,而类的适配器模式通过多继承或实现来实现适配器功能

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值