七大设计原则(四):接口隔离原则

本文通过慕课网视频《Java设计模式精讲》介绍接口隔离原则,避免接口设计过于臃肿,确保类仅依赖其需要的接口,提高代码的可读性、可扩展性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考慕课网视频《Java设计模式精讲》:
视频作者:Geely
视频链接:https://coding.imooc.com/lesson/270.html#mid=17152

定义

用多个专门的接口,而不使用单一的总接口。客户端不应该依赖它不需要的接口。

强调
  1. 一个类对一个类的依赖应该建立在最小的接口上。
  2. 建立单一接口,不要建立庞大臃肿的接口。
  3. 尽量细化接口,接口中的方法尽量少。
优点

符合我们常说的高内聚低耦合的设计思想,从而使得类具有很好的可读性、可扩展性和可维护性。

代码实现

还是先以反例来说明,看一个违背接口隔离原则的设计。

public interface Animal {

    /**
     * 吃东西
     */
    void eat();
    
    /**
     * 游泳
     */
    void swim();

    /**
     * 飞
     */
    void fly();
}

定义了一个动物的接口,接下来写实现类。

public class SmallDog implements Animal {
    @Override
    public void eat() {
        System.out.println("小狗会吃东西");
    }

    @Override
    public void swim() {
        System.out.println("小狗会游泳");
    }

    @Override
    public void fly() {

    }
}
public class SmallBird implements Animal {
    @Override
    public void eat() {
        System.out.println("小鸟会吃东西");
    }

    @Override
    public void swim() {

    }

    @Override
    public void fly() {
        System.out.println("小鸟会飞");
    }
}

可以仔细看上面的代码,小狗实现了动物这个类,实现了里面的方法,但是呢。有一个空方法,这是小狗不需要实现的。不可能强迫人家小狗飞到天上吧?
小鸟的实现类和小狗一样,难道让小鸟跑到水里游泳去吗?这也太难为人家了。这就是接口设计的过于臃肿,只要接口中出现的方法,不管对依赖于它的类有没有用处,实现类中都必须去实现这些方法。
所以,为了避免这样的情况发生,就要根据接口隔离原则,将接口抽离出来,使用多个统一的接口。

遵循接口隔离原则,重新实现上面的代码。首先定义一个吃东西的接口

public interface IEatAbility {

    /**
     * 吃饭的功能
     */
    void eat();
}

接着定义一个游泳的接口

public interface ISwimAbility {

    /**
     * 游泳的功能
     */
    void swim();
}

最后定义飞的接口

public interface IFlyAbility {

    /**
     * 飞
     */
    void fly();
}

小狗只会吃东西和游泳,所以只用实现吃、游泳的接口。

public class Dog implements IEatAbility, ISwimAbility {
    @Override
    public void eat() {
        System.out.println("小狗会吃东西");
    }

    @Override
    public void swim() {
        System.out.println("小狗会游泳");
    }
}

小鸟只会吃东西和飞,所以只用实现吃、飞的接口。

public class Bird implements IEatAbility, IFlyAbility {
    @Override
    public void eat() {
        System.out.println("小鸟会吃东西");
    }

    @Override
    public void fly() {
        System.out.println("小鸟会飞");
    }
}

基本上接口隔离原则就完成了,这个原则相对简单。但是在接口设计的时候也要注意,接口设计尽量小,但是一定要适度。设计的过小,会使系统复杂度增加,不利于维护。

成就一番伟业的唯一途径就是热爱自己的事业。如果你还没能找到让自己热爱的事业,继续寻找,不要放弃。跟随自己的心,总有一天你会找到的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值