java设计模式之适配器模式

来源:互联网 发布:算法设计与分析 视频 编辑:程序博客网 时间:2024/05/22 14:20

适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原来接口不兼容的类可以合作无间。
适配器又包含两种,一种是对象适配器,另一种是类适配器。
两者的区别:对象适配器采用组合的方式实现,类适配器采用继承的方式实现。

类适配器类图:
这里写图片描述
适配器Adapter继承Adaptee并实现Target接口来实现。

对象适配器类图:
这里写图片描述
适配器Adapter实现Target接口,在request方法中调用Adaptee对象的具体实现。

下面结合充电器适配器的例子来说明。

类图:
这里写图片描述
这个例子是通过适配器来使用安卓充电器给苹果设备充电。chargeAdapter的实现方式不同决定了是类适配器还是对象适配器。

接口AndroidCharger代码实现:

public interface AndroidCharger {    public void charge();}

AndroidCharge类代码实现:

public class AndroidCharge implements AndroidCharger{    @Override    public void charge() {        // TODO Auto-generated method stub        System.out.println("使用安卓充电器充电...");    }}

接口AppleCharger代码实现:

public interface AppleCharger {    public void charge();}

AppleCharge类代码实现:

public class AppleCharge implements AppleCharger{    @Override    public void charge() {        // TODO Auto-generated method stub        System.out.println("使用苹果充电器充电...");    }}

对象适配器ChargeAdapter代码实现:

public class ChargeAdapter implements AppleCharger{    AndroidCharger androidCharger;    public ChargeAdapter(AndroidCharger androidCharger){        this.androidCharger = androidCharger;    }    @Override    public void charge() {        // TODO Auto-generated method stub        androidCharger.charge();    }}

类适配器ChargeAdapter2代码实现:

public class ChargeAdapter2 extends AndroidCharge implements AppleCharger{}

Client类代码实现:

    public static void main(String[] args){        AppleCharger appleCharger = new AppleCharge();        appleCharger.charge();        //使用对象适配器模式        AndroidCharger androidCharger = new AndroidCharge();        ChargeAdapter adapter = new ChargeAdapter(androidCharger);        adapter.charge();        //使用类适配器模式        ChargeAdapter2 adapter2 = new ChargeAdapter2();        adapter2.charge();    }}

运行结果:

使用苹果充电器充电...使用安卓充电器充电...使用安卓充电器充电...
0 0