android adapter 模式,Android设计模式--适配器模式--Adapter入门

今天,我们要梳理一下java设计模式的适配器模式。

适配器嘛,想一想我们平常用的电源适配器就知道了,就是把两个不兼容的东西搞通嘛,可以相互联系。

android adapter 模式,Android设计模式--适配器模式--Adapter入门_第1张图片

在java中也一样,就是让两个需要一起协调的类,通过适配器协调起来就行了,就是讲一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

首先我们来看两个图,我们通常会有这样一个问题,厂商给我接口和我们现有接口对接不起来、旧的数据和新的数据接不起来等等。

android adapter 模式,Android设计模式--适配器模式--Adapter入门_第2张图片 解决这问题,在不改变原来两个接口的情况下,我们完全可以在写一个类,做个中间人,就像翻译官一样,我会两国语言,你们说话都经过我来就行了,这个适配器实现了你说期望的接口,而且这个类也能和厂商的接口沟通。android adapter 模式,Android设计模式--适配器模式--Adapter入门_第3张图片

总而言之,我们经常可以看到适配器出现在我们的代码中,如在Android便充分利用了适配器来实现view和数据的联系,如:ListView和BaseAdapter。

我们举一下一个小例子来说明一下适配器模式。

就拿我们首页的图来看,

我们国家的标准电压是220v,而我们笔记本所需的电压就15v左右;所以肯定不可以把我们的交流电直接接到笔记本上,这时,我们得有一个变压器(电源适配器)就可以了,把220v电压转换成15v;

下面介绍一下代码:

笔记本类

/**

*

* 笔记本

* @author studyjun

*

*/

public class Jotter {

private VoltageAdapter adapter;

public VoltageAdapter getAdapter() {

return adapter;

}

public void inputVoltage(){

System.out.println("笔记本得到输入电压" +adapter.transformVoltage()+"v");

}

public void setAdapter(VoltageAdapter adapter){

this.adapter =adapter;

}

}

供电器220v,提供220v的电压

/**

*

* 供电器

* @author studyjun

*

*/

public class PowerSupplyDevice {

//标准电压

private int standardVoltage =220;

/**

* 输出220v电压

* @return

*/

public int powerSupply(){

System.out.println("标准电压提供220v");

return standardVoltage;

}

}

适配器接口,有个电压转换接口

/**

*

* 电源适配器

* @author studyjun

*

*/

public interface VoltageAdapter {

/**

* 转换电压

*/

public int transformVoltage();

}

笔记本电源适配器类,把220v转为笔记本的15v的电压

/**

*

* 电源适配器

* @author studyjun

*

*/

public class MyVoltageAdapter implements VoltageAdapter{

private int voltage; //电压

/**

*  标准电压设备220v

*/

private PowerSupplyDevice powerSupplyDevice ;

public MyVoltageAdapter(PowerSupplyDevice powerSupplyDevice) {

this.powerSupplyDevice = powerSupplyDevice;

}

public int getVoltage() {

return voltage;

}

public void setVoltage(int voltage) {

this.voltage = voltage;

}

public PowerSupplyDevice getPowerSupplyDevice() {

return powerSupplyDevice;

}

public void setPowerSupplyDevice(PowerSupplyDevice powerSupplyDevice) {

this.powerSupplyDevice = powerSupplyDevice;

}

/**

* 转换电压

*/

public int transformVoltage(){

int voltage = powerSupplyDevice.powerSupply();

int lowerVoltage = voltage/14;

System.out.println("转化中电压为="+lowerVoltage+"v");

return lowerVoltage;

}

}

测试

public class Test {

public static void main(String[] args) {

Jotter jt = new Jotter();

PowerSupplyDevice powerSupplyDevice = new PowerSupplyDevice();

VoltageAdapter adapter=new MyVoltageAdapter(powerSupplyDevice);

jt.setAdapter(adapter);

jt.inputVoltage();

}

}

执行结果

android adapter 模式,Android设计模式--适配器模式--Adapter入门_第4张图片

讲到这里,我们总结一下适配器模式的优点和缺点:

优点:

1、可以将两个不同的接口联系起来,耦合性低。

2、增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性

3、灵活性和扩展性都非常好,符合开闭原则

类适配器的缺点:

1、对于Java、C#等不支持多重继承的语言,一次最多只能适配一个适配者类,而且目标抽象类只能为接口,不能为类,其使用有一定的局限性,不能将一个适配者类和他的子类同时适配到目标接口。

对象适配器还有的优点:

2、与类适配器模式相比,要想置换适配者类的方法就不容易。

你可能感兴趣的:(android,adapter,模式)