架构中的设计原则之接口分离原则(ISP)

我是研究僧i 提交于 2019-11-27 04:28:04


接口分离原则    

接口分离原则的核心思想是:不应该强迫客户程序依赖它们不需要使用的方法。英文缩写ISP,即Interface Segregation Principle。其实接口分离原则的意思就是:一个接口不需要提供太多的行为,一个接口应该只提供一种对外的功能,不应该 把所有的操作都封装到一个接口中。

这里的“接口”指的不仅仅是通过interface关键字定义的接口,接口分为如下两种。

  1. 对象接口。java中声明的一个类,通过new关键字产生的一个实例,它是对一个类型的事物的描述,这也是一种接口。

  2. 类接口。这中接口就是通过关键字interface 定义的接口。

    也就是说,接口分离原则要求的是在一个模块中应该只依赖它需要的接口,以保证接口的小纯洁。而且需要保证接口应该尽量小,即设计接口的时候应该让接口尽量细化,不要定义太臃肿的接口(比如接口中有很多不相干的逻辑方法声明)。

    接口分离原则与单一职责有些相似,不过不同在于:单一职责原则要求的是类和接口职责单一,注重的是职责,是业务逻辑上的划分。而接口分离原则要求的是接口的方法尽量少,针对一个模块尽量有用。

    在使用接口分离原则的时候,需要有一些规范。

  • 接口尽量小:接口尽量小,这主要是为了保证一个接口只服务于一个子模块或者业务逻辑。

  • 接口高内聚:接口高内聚是对内高度依赖,对外尽可能隔离。即一个接口内部声明的方法相互之间都与某一个子模块相关,且是这个子模块必须的。

  • 接口设计是有限度的:如果完全遵循接口分离原则的话,会出现一个问题,即接口的设计力度会越来越小,这样就造成了接口数量剧增,系统复杂度一下子增加了,而不是真实项目所需要的,所以在使用这个原则的时候,还要在特定的项目中,根据经验或尝试去判断,但没有一个固定的标准。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!