java设计模式之适配器模式

    xiaoxiao2021-03-26  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(); } }

    运行结果:

    使用苹果充电器充电... 使用安卓充电器充电... 使用安卓充电器充电...
    转载请注明原文地址: https://ju.6miu.com/read-658828.html

    最新回复(0)