一文让你再也不怕面试官提问“接口隔离原则”

来自菜鸟的关怀

随着天气越来越热,大家是不是都已经过上“左手小冰棍,右手大西瓜,吹着小空调,乐的笑哈哈”的日子了?不过还是要在这里提醒大家一下,冷饮、空调虽然好,但是一定要适度啊!

这不最近菜鸟就因为欢乐过度,乐极生悲了,急性肠胃炎找上了。拉肚子,拉到怀疑人生,上厕所,上到头皮发麻,整个人都已经虚脱了。所以大家一定要多多注意,千万别跟菜鸟一样吃坏肚子。

在这里插入图片描述

虽然身体不适,但是菜鸟还在坚持写文章。看在菜鸟这么努力的份上大家记得点赞加关注呦!

基本概念

专业解释:

1、客户端不应该依赖它不需要的接口。
2、一个类对另一个类的依赖应该建立在最小的接口上。

是不是有种雨里雾里的感觉?这就对了,只有不好理解才能称得上专业吗!

在这里插入图片描述

好了好了,开玩笑啦!让菜鸟来解释一下。

一个接口只应该被赋予一种职责(角色),不可以将不同职责都交给一个接口。

接口隔离原则的好处

1、单一化接口的职责,从而有效地避免接口污染。
2、当一个接口的方法过多,往往会造成使用该接口的类中闲置一些方法,造成代码的冗余,通过细分接口可有效避免该现象。
3、可以提高代码的灵活性,就好比搭积木一样,我们可以将一个大的接口拆成多个小接口,不同的小接口可以有多种组合。
4、促使程序高内聚、低耦合。

注意:细化接口虽好,但是也不可一味地盲目拆分,不然会增加接口的数量,提高系统的维护成本。

代码示例

先展示一下未遵守接口隔离原则的代码

public interface School {

  /**
   * 上课
   */
  void attendClass();

  /**
   * 下课
   */
  void afterClass();

  /**
   * 学习
   */
  void learn();

  /**
   * 讲课
   */
  void lecture();
}

如上代码,假设此时有一个People类,它的角色是学生,实现了School接口。它就会被迫实现“讲课”这个方法,事实它是不需要该方法的。这就造成了代码的冗余,使我们的代码变得臃肿。

按照接口隔离原则,我们可以将上面的大接口拆分成3个小的接口。

学校接口:

public interface School {

  /**
   * 上课
   */
  void attendClass();

  /**
   * 下课
   */
  void afterClass();

}

老师接口:

public interface Teacher {

  /**
   * 讲课
   */
  void lecture();
}

学生接口:

public interface Student {

  /**
   * 学习
   */
  void learn();
}

通过上面的拆分我们就可以有效避免冗余代码的产生,进而还可以促使我们的代码变得更加灵活。

以上就菜鸟对接口隔离原则的一点自己的看法,如果文章那里写的不合理的希望大家可以提出来。还有一点需要提醒大家的就是:凡事都是利弊共存,我们需要学会权衡利弊,找到最优的解决方法,促使程序变得更加的优秀。好了今天的分享就到这里了,感觉文章写得还不错的记得给点赞加关注呦,最后祝大家周末愉快!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/first_M/article/details/106724476