接口隔离原则(ISP)
接口隔离原则(Interface Segregation Principle,常常略写做ISP)讲的是:使用多个专门的接口比使用单一的总接口要好。
换言之,从一个客户类的角度来讲,一个类对另外一个类的依赖性应当使建立在最小的接口上的。
什么是接口隔离原则
角色的合理划分
将“接口”理解为一个类所提供的所有方法的特征集合,也就是一种在逻辑上存在的概念。接口的划分直接带来类型的划分。
角色划分的原则叫做角色隔离原则。
定制服务
将接口理解成为狭义的Java接口,接口隔离原则讲的就是为同一个角色提供宽、窄不同的接口,以对付不同的客户端,如右图所示。这种方法在服务行业叫做定制服务(Customized Service)。
在上面的示意性类图中,有一个角色Service以及三个不同的客户端。这三个客户端的服务都是稍稍不同的,因此系统分别为他们提供了三个不同的Java接口,即IService1,IService2以及IService3。显然,每一个Java接口都仅仅将客户端需要的行为暴露给客户端,而没有将客户端所不需要的行为放到接口中。
接口污染
过于臃肿的接口就是对接口的污染(Interface Contamination)。
由于每一个接口都代表一个角色,实现一个接口的对象,在它的整个生命周期中都扮演这个角色,因此将角色区分清楚就是系统设计的一个重要工作。因此,一个符合逻辑的推断,不应当将几个不同的角色都交给同一个接口,而应当交给不同的接口。
与迪米特法则的关系
迪米特法则要求任何一个软件实体,除非绝对需要,不然不要与外界通信。
即使必须进行通信,也应当尽量限制通信的广度和深度。
——–
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《接口隔离原则(ISP)》
本文地址:http://www.xiupu.net/archives-8387.html
关注公众号:
微信赞赏
支付宝赞赏