设计六大原则之接口隔离原则

接口隔离原则:客户端不应该依赖它不需要的接口。另一种定义:类间的依赖关系应该建立在最
小的接口上。接口隔离原则就是把庞大的、臃肿的接口拆分成尽可能小的和具体的接口,这样客
户只需要实现他需要实现的接口就可以了,那些不必要实现的接口就被隔离开了,即不在我们所
依赖接口的实现(implement)类中,代码就会变得简洁。说白了就是对一个复杂、臃肿的接口
进行拆分,使得每个接口的功能具体、简单。

我们还是举个简单的例子说明:

1.我们创建一个接口,用于描述各种交通工具的接口Vehicle 

public interface Vehicle {
    void car();
    void bus();
    void truck();
}

2.现在我们去实现这个接口

2.1我要描述我的小车

public class MyCar implements Vehicle{
    private static final String TAG = "MyTest";
    @Override
    public void car() {
        Log.i(TAG,"This is my car.");
    }

    @Override
    public void bus() {
//这个方法不是必须的
    }

    @Override
    public void truck() {
//这个方法不是必须的
    }
}

我们会发现在MyCar这个类中,我们并没有用到bus()和truck()这两个方法。但由于它们是和car()在
同一个接口里,所以也必须在MyCar类中出现。

同理看下下面这两个方法一样

public class MyTruck implements Vehicle{
    private static final String TAG = "MyTest";
    @Override
    public void car() {
//这个方法不是必须的
    }

    @Override
    public void bus() {
//这个方法不是必须的
    }

    @Override
    public void truck() {
        Log.i(TAG,"This is my truck.");
    }
}


public class MyBus implements Vehicle {
    private static final String TAG = "MyTest";

    @Override
    public void car() {
//这个方法不是必须的
    }

    @Override
    public void bus() {
        Log.i(TAG, "This is my bus.");
    }

    @Override
    public void truck() {
//这个方法不是必须的
    }
}

那我们该怎么去简化这种麻烦呢,让代码简洁清晰明了,没有多余的部分。很简单,接口隔离告
诉了我们只要把接口简化了就可以了。我们把接口Vehicle拆分成三个,如下所示:

public interface Vehicle {
    void car();
    void bus();
    void truck();
}

public interface Car {
    void cars();
}

public interface Bus {
    void buss();
}

public interface Truck {
    void Trucks();
}



现在我们需要实现Car这个接口,代码如下,是不是简洁了很多,砍掉了多余的部分。

public class CartA implements Car {
    private static final String TAG = "MyTest";
    @Override
    public void cars() {
        Log.i(TAG,"这是汽车A,价值2000万。");
    }
}

public class CartB implements Car {
    private static final String TAG = "MyTest";

    @Override
    public void cars() {
        Log.i(TAG, "这是汽车B,价值100万。");
    }
}

总结:
1.接口尽量小,尽量具体。但是接口过小,也会使得接口过多,从而变得复杂,具体需要怎么样的
接口需要对具体问题具体分析。这个需要一定的编程经验。

2.考虑要依赖接口的类所需要的方法,不要多余的,多余的就变得臃肿,也不要太小,否则接口就
会变得躲起来,失去了使接口变小的意义,只有专注地为某个模块提供定制接口服务,才可能建立
最小的依赖关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值