Android开发经验谈Java设计模式

【设计模式笔记】(十八)- 适配器模式

2018-07-01  本文已影响33人  MrTrying

适配器模式(Adapter Pattern),此模式的作用就是兼容原本接口不匹配的两个类,起到桥梁的作用。

其实在Android中平常接触的就很多,ListViewGridViewRecyclerView都用到的Adapter就用到了适配器模式,无论给Adapter什么样的数据,最后到RecyclerView显示的都是View

类适配器模式

类的适配器模式,采用继承实现的

适配器模式.png

不说远了,就说手机充电头,其实就是一个电源适配器,生活用电的电压是220v,而手机充电的电压是5v,所以这时候就需要使用到电源适配器将220v的电压转换为5v(如果你是直接插在插板的USB接口上的话,当我没说)。

对应上面的UML图, 生活电压就是Adaptee,手机充电电压就是Target,不用多说,电源适配器自然就是Adapter了。

Target给出

//Target接口
public interface Volt5 {
    public int getVolt5();
}

//Adaptee类
public class Volt220 {
    public int getVlot220(){
        return 220;
    }
}

//Adapter类
public class VoltAdapter extends Volt220 implements Volt5 {
    @Override
    public int getVolt5() {
        return 5;
    }
}

public class Client{
    public static void main(String[] args){
        VoltAdapter adapter = new VoltAdapter();
        System.out.println("输出电压:" + adapter.getVolt5());
    }
}

对象适配器模式

与类适配器模式不同的是,对象适配器模式不适用继承关系链接Adaptee类,而是使用代理关系链接到Adaptee

适配器模式.png

这种实现方式直接将要被适配的对象传递到Adapter中,使用组合的形式实现接口兼容的效果。比类适配器的实现方式更灵活,还有就是Adaptee对象不会暴露出来,因为没有继承被适配对象。

//Target接口
public interface Volt5 {
    public int getVolt5();
}

//Adaptee类
public class Volt220 {
    public int getVlot220(){
        return 220;
    }
}

//Adapter类
public class VoltAdapter implements Volt5 {

    Volt220 volt220;

    public VoltAdapter(Volt220 volt220){
        this.volt220 = volt220;
    }

    public int getVolt220(){
        return volt220.getVlot220();
    }

    @Override
    public int getVolt5() {
        return 5;
    }
}

public class Client{
    public static void main(String[] args){
        VoltAdapter adapter = new VoltAdapter(new Volt220());
        System.out.println("输出电压:" + adapter.getVolt5());
    }
}

优点

缺点

过多的使用,会让代码更加凌乱。

「推荐」设计模式系列

设计模式(零)- 面向对象的六大原则
设计模式(一)- 单例模式
设计模式(二)- Builder模式
设计模式(三)- 原型模式
设计模式(四)- 工厂模式
设计模式(五)- 策略模式
设计模式(六)- 状态模式
设计模式(七)- 责任链模式
设计模式(八)- 解释器模式
设计模式(九)- 命令模式
设计模式(十)- 观察者模式
设计模式(十一)- 备忘录模式
设计模式(十二)- 迭代器模式
设计模式(十三)- 模板方法模式
设计模式(十四)- 访问者模式
设计模式(十五)- 中介者模式
设计模式(十六)- 代理模式
设计模式(十七)- 组合模式
【设计模式笔记】(十八)- 适配器模式
【设计模式笔记】(十九)- 装饰者模式

上一篇下一篇

猜你喜欢

热点阅读