JAVA -- 适配器模式之 接口适配器模式

  介绍:

        适配器模式,简单来说就是把原来不适配的两样东西,通过适配,使两样东西适配起来使用。现实生活有很多例子,比如两个口的插座,但是电器是3口的,就可以通过排插,让电器用起来,手机充电用的是插头,现在用电脑USB接口接点线也可以连接和充电,这也是适配器的使用,而在代码上也是如此,存量的一些功能可能需要进行新功能扩展,但是存量功能不满足,需要进行些许改造才能满足,这时候可以考虑使用适配器模式进行代码改造。

背景:

        有一个功能,源类是传入账户余额,然后显示他存款有多少人民币。现在希望可以通过汇率转换,查看他有多少美元,日元,欧元,英镑4种币种,但是暂时的只需要实现美元的展示,这时候,就可以采用接口适配器模式,部分实现美元展示功能。

类适配模式博客:JAVA -- 适配器模式之 类适配器模式_DGH2430284817的博客-CSDN博客

对象适配模式博客:JAVA -- 适配器模式之 对象适配器模式_DGH2430284817的博客-CSDN博客

接口适配器模式:

 RMB类(源类):

public class Money_RMB {
    public BigDecimal showRmb( String money){
        BigDecimal bigDecimal = new BigDecimal(money);
        System.out.println("账户余额:" + bigDecimal +"人民币");
        return bigDecimal;
    }
}

美元接口类:

/*
 * @description: 人民币,美元,日元,欧元,英镑 实现接口
 * @author: diaogh
 */
public interface Money_ALL {

    public BigDecimal showRMB(String money);

    public BigDecimal showUS(String money);

    public BigDecimal showJP(String money);

    public BigDecimal showWS(String money);

    public BigDecimal showYB(String money);
}

抽象空实现类:

/*
 * @description: 抽象空实现方法,具体要实现那个功能,由具体的适配器去继承本类重载对应方法实现
 * @author: diaogh
 */
public abstract  class Money_ALL_Abstract implements Money_ALL {

    @Override
    public BigDecimal showRMB(String money) {
        return null;
    }

    @Override
    public BigDecimal showUS(String money) {
        return null;
    }

    @Override
    public BigDecimal showJP(String money) {
        return null;
    }

    @Override
    public BigDecimal showWS(String money) {
        return null;
    }

    @Override
    public BigDecimal showYB(String money) {
        return null;
    }
}

美元适配器:

/*
 * @description: 美元接口适配器,仅实现Money_ALL_Abstract 中,美元展示的具体功能
 * @author: diaogh
 */
public class Money_US_Adatper extends  Money_ALL_Abstract {
    //源类对象
    private Money_RMB money_rmb;

    //构造方法中传入源类对象
    public Money_US_Adatper(Money_RMB money_rmb){
        this.money_rmb = money_rmb;
    }
    //仅实现美元展示接口
    public BigDecimal showUS( String money) {
        BigDecimal  bigDecimal = new BigDecimal(money);
        //现在人民币和美元汇率是 6.4:1
        System.out.println("账户余额:" + bigDecimal.divide(new BigDecimal("6.4")) +"美元");
        return bigDecimal;
    }
}

测试方法及效果:

    public static void main(String[] args) {
        System.out.println("接口适配器模式");
        Money_US_Adatper implAdatper = new Money_US_Adatper(new Money_RMB() );
        implAdatper.showUS("100");
    }

总结:

        类适配模式:需要实现的目标功能抽象成接口方法,适配器中通过继承获取源类方法,进行适配来实现目标功能

        对象适配模式:需要实现的目标功能抽象成接口方法,适配器中通过构造器获取源类方法,进行适配来实现目标功能,同时也可以重载源类方法

        接口适配模式:所有的待实现功能添加到接口当中,同时用抽象类去空实现接口中的功能,具体的实现交给具体的功能适配器继承实现,该功能适配器的构造方法中传入源类对象,然后重写父类对应功能方法。

        

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值