Java设计模式之适配器模式

模式介绍

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

应用场景

生活中存在很多使用适配器模式的例子,例如国内电压是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数据线充电
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值