面向对象原则之一 接口隔离原则

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象原则之一 接口隔离原则相关的知识,希望对你有一定的参考价值。

原文:面向对象原则之一 接口隔离原则

前言

面向对象有人分为五大原则,分别为单一职责原则、开放封闭原则、依赖倒置原则、接口隔离原则、里氏替换原则。

也有人分为六大原则,分别为单一职责原则、开放封闭原则、依赖倒置原则、接口隔离原则、里氏替换原则、迪米特法则。

 

现在我们来介绍接口隔离原则

 

接口隔离原则

1)概念

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

怎么理解呢?通俗一点就是说接口尽量细分,把不需要的方法尽量写在2个不同的接口上。

假如我有一个接口Interface1,有5个方法。其中Class1想实现第1-3个方法,Class2想实现第3-5个方法。

那么我只有一个Interface1,如果达到上面的要求,Class1与Class2只能实现Interface1的5个方法,如下:

技术分享图片

那么就变得很臃肿了。有什么解决办法呢?接口分离原则很好地解决了以上方法。

我们把Interface1分离3个接口,然后Class1与Class2分别继承对应的接口,如下:

技术分享图片

这样,很好的消除了冗余。

2)深入了解

接口隔离原则的含义是:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。也就是说,我们要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。本文例子中,将一个庞大的接口变更为3个专用的接口所采用的就是接口隔离原则。在程序设计中,依赖几个专用的接口要比依赖一个综合的接口更灵活。接口是设计时对外部设定的“契约”,通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。

说到这里,很多人会觉的接口隔离原则跟之前的单一职责原则很相似,其实不然。其一,单一职责原则原注重的是职责;而接口隔离原则注重对接口依赖的隔离。其二,单一职责原则主要是约束类,其次才是接口和方法,它针对的是程序中的实现和细节;而接口隔离原则主要约束接口接口,主要针对抽象,针对程序整体框架的构建。

采用接口隔离原则对接口进行约束时,要注意以下几点:

  • 接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性是不挣的事实,但是如果过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。
  • 为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为一个模块提供定制服务,才能建立最小的依赖关系。
  • 提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。

运用接口隔离原则,一定要适度,接口设计的过大或过小都不好。设计接口的时候,只有多花些时间去思考和筹划,才能准确地实践这一原则。

3)生活中例子

比如,我们身边的手机,有打电话、支付、摄影、聊天、玩游戏功能。

我们可以定义一个接口IPhoneOperation来说明这些功能。这样臃不臃肿,要看业务逻辑。

我们现在定一个业务逻辑,把手机功能分成业余娱乐、生活支付、工作电话。可以拆分接口分别为:

技术分享图片

拆分各种接口后,在业务层面我们更加容易地了解各自的业务功能实现;在代码层面我们更加的高内聚,低耦合。

 

 

其他链接:

开放封闭原则(开闭原则)

单一职责原则

依赖倒置原则

接口隔离原则

里氏替换原则

迪米特法则

 

 

以上是关于面向对象原则之一 接口隔离原则的主要内容,如果未能解决你的问题,请参考以下文章

面向对象原则之一 依赖倒置原则

面向对象原则之一 开放封闭原则(开闭原则)

面向对象原则之一 迪米特法则

面向对象原则之一 迪米特法则

面向对象设计的三个原则

C# 实例解释面向对象编程中的接口隔离原则