Android开发经验谈Android开发Android技术知识

适配器模式

2019-02-19  本文已影响55人  Jackson杰

一 定义

适配器模式在我们的开发过程中使用率非常高,从android开发中随处可见的Adapter就可以看出。那么什么是适配器模式呢,适配器是将两个不兼容的类融合在一起,将不同的东西通过一种转换使得他们协作起来。

适配器模式把一个类的接口变换成客户端所期待的另一个接口,从而使原本因接口不匹配而无法再一起工作的两个类能够在一起工作。

简单地说,适配器就是一种适配中间件,它存在于不匹配的了两者之间,用于连接两者,使不匹配变得匹配。

二 使用场景

三 类适配器

适配器模式分为两种,既类适配器模式和对象适配器模式。首先看类是适配器模式。

三-1 模式结构

如图所示,类适配器是通过实现Target接口以及继承Adaptee类实现接口转换的,例如,目标接口Target需要的是operation2,但是Adaptee里只有一个operation3,因此就出现了不兼容的情况,因此可以通过Adapter实现一个operation2方法将Adaptee的operation3转化为Target需要的operation2,实现兼容。

三-2 实例

下面以生活中常见的给手机充电的例子来说明,生活中的电线电压一般都是220v,而手机充电需要的电压是5v的,这就出现了不匹配的情况,这时就需要一个中间层,即适配器来解决。
通过以上分析可知,5v的电压就是Target接口,220V电压就是Adaptee类,而将电压从220V转换为5V就是Adapter。

具体的代码如下:

// Target角色
public interface FiveVolt {
    public int getVole5();
}
// Adaptee角色,需要被转换的对象
public class Volt220 {
    public int getVolt220(){
        return 220;
    }
}
// Adapter角色,将220V的电压
public class VoltAdapter extends Volt220 implements FiveVolt{
    @Override
    public int getVole5() {
        return 5;
    }
}
 VoltAdapter adapter=new VoltAdapter();
        System.out.println("输出电压: "+adapter.getVole5());

以上,因为对应的Target的目标是要获取5v的输出电压,而Adatee正常输出电压是220V,此时就需要Adapter将220v的电压转换为5v电压,解决了接口不兼容问题。

四 对象适配器

与类适配器不同的是,对象适配器在将适配的类的API转换为目标类的API时,不是使用继承的关系,而是使用代理的方式。
也就是说,需要提供一个包装类Adapter,这个包装类包装了一个Adaptee的实例,从而此包装类能够把Adaptee的API与Target类的API链接起来。

代码如下

// Target角色
public interface FiveVolt {
    public int getVole5();
}
// Adaptee角色,需要被转换的对象
public class Volt220 {
    public int getVolt220(){
        return 220;
    }
}
// 对象适配器模式
public class VoltsAdapter implements FiveVolt{

    Volt220 mVolt220;

    public VoltsAdapter(Volt220 adaptee){
        mVolt220=adaptee;
    }


    public int getVolt220(){
        return mVolt220.getVolt220();
    }


    @Override
    public int getVole5() {
        return 5;
    }
}
    VoltsAdapter adapter1=new VoltsAdapter(new Volt220());
        System.out.println("输出电压: "+adapter1.getVole5());

适配器模式的本质就是:转换匹配,复用功能。适配器模式具有以下优点:

上一篇下一篇

猜你喜欢

热点阅读