软件设计重构秘笈9式-08提取接口

软件设计重构秘笈9式-08提取接口

概念

本文中的“提取接口” 是指超过一个的类要使用某一个类中部分方法时,我们应该解开它们之间的依赖,让调用者使用接口,这很容易实现也可以降低代码的耦合性。

意图

提取接口可以降低代码的耦合性
如下代码所示,RegistrationProcessor 类只使用到了ClassRegistration 类中的create方法和total 字段,所以可以考虑把他们做成接口给RegistrationProcessor 调用。

案例

public class ClassRegistration {

    public void create(){

    }

    public void transfer(){

    }

    public double total;

    public double getTotal() {
        return total;
    }

    private void setTotal(double total) {
        this.total = total;
    }
}

public class RegistrationProcessor {

    public double processRegistration(ClassRegistration registration) {
        registration.create();
        return registration.total;
    }

}

重构

重构后的代码如下,我们提取了一个IClassRegistration 接口,同时让ClassRegistration 继承此接口,
然后调用端RegistrationProcessor 就可以直接通过IClassRegistration 接口进行调用。

public interface IClassRegistration {

    void create();

    double getTotal();
}

public class ClassRegistration implements IClassRegistration{

    @Override
    public void create() {

    }

    @Override
    public double getTotal() {
        return 0;
    }

    public void transfer(){

    }
}

public class RegistrationProcessor {

    public double processRegistration(IClassRegistration iClassRegistration) {
        iClassRegistration.create();
        return iClassRegistration.getTotal();
    }

}

总结

这个重构策略也是一个常见的运用,很多设计模式也会在其中运用此思想(如简单工程、抽象工厂等都会通过接口来解开依赖)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值