文章图片标题

接口隔离原则(ISP)

分类:架构设计 作者:阳光倾城 评论:0 点击: 400 次 日期:2016-09-21

接口隔离原则(Interface Segregation Principle,常常略写做ISP)讲的是:使用多个专门的接口比使用单一的总接口要好。

换言之,从一个客户类的角度来讲,一个类对另外一个类的依赖性应当使建立在最小的接口上的。

什么是接口隔离原则

角色的合理划分

将“接口”理解为一个类所提供的所有方法的特征集合,也就是一种在逻辑上存在的概念。接口的划分直接带来类型的划分。

角色划分的原则叫做角色隔离原则。

定制服务

将接口理解成为狭义的Java接口,接口隔离原则讲的就是为同一个角色提供宽、窄不同的接口,以对付不同的客户端,如右图所示。这种方法在服务行业叫做定制服务(Customized Service)。

image

在上面的示意性类图中,有一个角色Service以及三个不同的客户端。这三个客户端的服务都是稍稍不同的,因此系统分别为他们提供了三个不同的Java接口,即IService1,IService2以及IService3。显然,每一个Java接口都仅仅将客户端需要的行为暴露给客户端,而没有将客户端所不需要的行为放到接口中。

 

接口污染

过于臃肿的接口就是对接口的污染(Interface Contamination)。

由于每一个接口都代表一个角色,实现一个接口的对象,在它的整个生命周期中都扮演这个角色,因此将角色区分清楚就是系统设计的一个重要工作。因此,一个符合逻辑的推断,不应当将几个不同的角色都交给同一个接口,而应当交给不同的接口。

与迪米特法则的关系

迪米特法则要求任何一个软件实体,除非绝对需要,不然不要与外界通信。

即使必须进行通信,也应当尽量限制通信的广度和深度。

 

--------




声明: 除非注明,本文属( 阳光倾城 )原创,转载请保留链接: http://www.tomrrow.com/archives-8387.html