Android开发经验谈Android开发首页投稿(暂停使用,暂停投稿)

Android设计模式之(18)----适配器模式

2017-09-01  本文已影响61人  Ch3r1sh

适配器模式

适配器模式数据结构型设计模式.

适配器模式主要用于将2个不能兼容的物件结合在一起.分为类适配器对象适配器.

比如由于2个类因为接口问题没办法在一起工作,可以使用适配器模式将其结合起来.

比如生活中的电源适配器,A物品需要100V电压,B物品需要220V电压,直接作用其中有一个无法达到效果,而电源适配器支持100~220V就可以完美解决这样的问题.

应用场景

代码示例(类适配器)

(一)获取电压的接口

public interface Voltage {

    void getVoltage();
}

(二)物件A实现电压接口获取220V电压

public class Voltage220 implements Voltage {
    @Override
    public void getVoltage() {
        System.out.print("\n"+"正常物件B:获取220的电压");
    }
}

(三)物件B的110V电压(重构过程中需要使用它又不能破坏之前的接口)


    public  void  getVoltage100(){
        System.out.print("\n"+"特殊物件B:获取100的电压");
    }
}


(四)电源适配器

public class PowerAdapter extends Voltage100 implements Voltage{
    @Override
    public void getVoltage() {
        super.getVoltage100();
    }
}

继承原本的110V电压并且实现正常220V电压,统一到一个类进行处理

调用方式

        Voltage voltage=new Voltage220();
        voltage.getVoltage();

        Voltage voltage1=new PowerAdapter();
        voltage1.getVoltage();

根据自己的需要来选择创建符合需要的子类实现具体功能。

代码示例(对象适配器)

在上述的类适配器中使用的方式是先继承在实现具体的方法来进行适配,而对象适配器中则直接将对象进行关联,更为灵活方便.

(一)直接关联被适配类的适配器

public class AbstractPowerAdapter implements  Voltage {

    //适配类为100V电压
    private  Voltage100 voltage100;

    public AbstractPowerAdapter(Voltage100 voltage100) {
        this.voltage100 = voltage100;
    }

    @Override
    public void getVoltage() {
        voltage100.getVoltage100();
    }
}

调用方式

  Voltage100 voltage3=new Voltage100();
        Voltage voltage4=new AbstractPowerAdapter(voltage3);
        voltage4.getVoltage();

显示结果如同上述的类适配器一致.

对象适配器直接在构造参数中将适配的类进行关联,这样我们可以关联多个不同的适配类.

总结

github源码地址

上一篇下一篇

猜你喜欢

热点阅读