编程模式---接口隔离原则(ISP)

     接口隔离原则讲的是:使用多个专门的接口比使用单一的总接口要好。换言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小的接口上的

一、什么是接口隔离原则

   人们常说的“接口”往往有两种含义,一种是狭义上的,指的是Java语言中的有严格定义的interface结构;另一种则是广义上的,指的是一个类型所具有的方法特征的集合,但这仅是一种逻辑上的抽象。对于这两种不同的用词,接口隔离原则的表达方式以及含义都有所不同。

     ①将“接口”理解为一个类所提供的所有方法的特征集合,也就是一种在逻辑上才存在的概念。这样的话,接口的划分就直接带来类型的划分。一种接口相当于剧本中的一种角色,而此角色在一个舞台上由那个演员来演则相当于接口的实现。因此,一个接口应当简单的代表一个角色,而不是多个角色。如果系统涉及到多个角色的话,那么每一个角色都相当于一个特定的接口代表。

     ②将接口理解成狭义的Java接口,这样一来,接口隔离原则讲的就是为同一个角色提供宽、窄不同的接口,以对付不同的客户端。这种方法在服务行业中叫做定制服务。

二、接口污染

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

     准确而恰当的划分角色以及角色所对应的接口,是面向对象的设计的一个重要的组成部分。将没有关系的接口合并在一起,形成一个臃肿的大接口,是对角色和接口的污染。

三、与迪米特法则的关系

     迪米特法则要求任何一个软件实体,除非绝对需要,不然不要与外界通讯。即使必须进行通讯,也应当尽量限制通讯的广度和深度。显然,定制服务原则拒绝向客户端提供不需要提供的行为,是符合迪米特法则的。

四、定制服务的例子

   定制服务也是一个重要的设计原则。他的意思是说,如果客户端仅仅需要一些方法的话,那么就应当向客户端提供这些需要的方法,而不是提供不需要的方法。

     这样做有什么效果?

     ①这样做很整洁。从美学的角度上考虑,这是一个很好的做法。

     ②系统的可维护性。向客户端提供的public接口是一种承诺,一个对外开发的接口一旦承诺,就很难撤回。作为软件提供商,我们不应当作出过多的承诺,特别是不需要的承诺。过多的承诺会给系统的维护造成不必要的负担。

     如果这些接口仅仅是给公司内部的系统使用,那么将这些接口隔离开来,也可以降低维护的成本。因为如果一旦所提供的服务出现变化的话,我们知道哪些客户端会受到影响,哪些不会受到影响。这显然也是符合迪米特法则的。

五、古语解析

     “看人下菜碟”的意思说,要看客人是谁,再提供不同档次的饭菜。从接口隔离原则的角度出发,根据客户端需要的不同,而为不同的客户端提供不同的服务是一种应当得到鼓励的做法。

 

 

本文通过总结《java与模式》而来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值