Adapter Design Pattern(适配器模式)

Adapter Design Pattern(适配器模式)

适配器模式的作用
关联两个不相关的类,使他们可以在一块工作
案例
手机电压与插座之间实现适配者模式
手机电压

public class Volt {
    //电压
    private int volts;
    public Volt(int v){
        this.volts=v;
    }
    public int getVolts() {
        return volts;
    }
    public void setVolts(int volts) throws Exception {
        this.volts = volts;
    }
}

插座电压

public class Socket {
    //提供获取插座电压的方法
    public Volt getVolt() {
        return new Volt(120);
    }
}

提供将插座电压转为手机电压的规范

public interface SocketAdapter {
    public Volt get120Volt();
    public Volt get12Volt();
    public Volt get3Volt();
}

两种方式实现规范

/**
 * 适配器实现方式之一
 * 继承Socket类 调用获取电压的方法
 * 适配器使用继承的方式
 */
public class SocketClassAdapterImpl extends Socket implements SocketAdapter {
    @Override
    public Volt get120Volt() {
        return getVolt();
    }

    @Override
    public Volt get12Volt() {
        Volt v = getVolt();
        return convertVolt(v, 10);
    }

    @Override
    public Volt get3Volt() {
        Volt v = getVolt();
        return convertVolt(v, 40);
    }

    private Volt convertVolt(Volt v, int i) {
        return new Volt(v.getVolts() / i);
    }
}
/**
 * 适配器实现之一
 * 创建Socket对象获取插座的电压
 */
public class SocketObjectAdapterImpl implements SocketAdapter {
    //对适配器使用合成的方式
    private Socket sock = new Socket();
    @Override
    public Volt get120Volt() {
        return sock.getVolt();
    }
    @Override
    public Volt get12Volt() {
        Volt v= sock.getVolt();
        return convertVolt(v,10);
    }
    @Override
    public Volt get3Volt() {
        Volt v= sock.getVolt();
        return convertVolt(v,40);
    }
    private Volt convertVolt(Volt v, int i) {
        return new Volt(v.getVolts()/i);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值