Java设计模式之适配器模式

来源:互联网 发布:红米1s支持4g网络吗 编辑:程序博客网 时间:2024/05/21 11:31

模式介绍

适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

应用场景

生活中存在很多使用适配器模式的例子,例如国内电压是220V,国外是110V,所以去国外要买一个电压转换器,还有安卓数据线是大口的,苹果数据线是小口的,但是可以用一个转换头也能让安卓数据线给苹果手机充电。

例子说明

下面写个关于安卓数据线和苹果数据线的demo来实现适配器模式。

uml图
这里写图片描述
数据线大口

/** * 大口 * @author S * */public interface BigPort {    public String useBigPort();}

数据线小口

/** * 小口 * @author S * */public interface SmallPort {    public String useSmallPort();}

Android数据线

/** * Android数据线 * @author S * */public class AndroidUsbLine implements BigPort{    @Override    public String useBigPort() {        // TODO Auto-generated method stub        return "Android数据线";    }}

苹果数据线

/** * 苹果数据线 * @author S * */public class IphoneUsbLine implements SmallPort{    @Override    public String useSmallPort() {        // TODO Auto-generated method stub        return "苹果数据线";    }}

转换器

/** * 转换器 * @author S * */public class UsbAdapter  implements SmallPort{    private BigPort port;    public UsbAdapter(BigPort port){        this.port = port;    }    @Override    public String useSmallPort() {        // TODO Auto-generated method stub        return port.useBigPort();    }}

Android手机

/** * android手机 */public class Android {    /**     * 充电     * @param port     */    public void charge(BigPort port){        System.out.println("Android手机使用"+port.useBigPort()+"充电");    }}

苹果手机

/** * 苹果手机 */public class Iphone {    /**     * 充电     * @param port     */    public void charge(SmallPort port){        System.out.println("苹果手机使用"+port.useSmallPort()+"充电");    }}

测试

/** * 适配器模式 * @author S * */public class Main {    public static void main(String args[]){        //安卓手机充电        AndroidUsbLine line1 = new AndroidUsbLine();        Android android = new Android();        android.charge(line1);        //苹果手机充电        IphoneUsbLine line2 = new IphoneUsbLine();        Iphone iphone = new Iphone();        iphone.charge(line2);        SmallPort line3 = new UsbAdapter(line1);        iphone.charge(line3);    }}

打印结果

Android手机使用Android数据线充电苹果手机使用苹果数据线充电苹果手机使用Android数据线充电
原创粉丝点击