您的位置:首页 > 编程语言 > Java开发

Java 设计模式(十三) 接口隔离原则(ISP)

2016-05-11 15:08 288 查看

接口隔离原则(Interface Segregation Principle)

ISP基本概念

接口

实例接口(Object Interface):一个类的实例对象是对一个类型的事物的描述,这时一种接口。

类接口(Class Interface):Java中interface关键定义的接口,也是我们通常理解的狭义的接口

ISP定义

客户端(模块)不应该依赖它不需要的接口(接口的纯粹性)

一个模块应该依赖它需要的接口,需要什么接口就提供什么接口,把不需要的接口剔除掉,那就需要对接口进行细化,保证接口的纯洁性

类间的依赖关系应该建立在最小的接口

同样强调对接口的细化,那么接口作为抽象,在建立关系时才能保证纯洁性不会被无关的依赖破坏

保证接口纯洁性的规范

接口细化

在不违反单一职责原则(SRP)下,要对接口尽量细化,违背SRP会导致单个模块暴露太多方法(接口中的方法都是publi),很多单一职能的内部接口被暴露。

接口高内聚

高内聚:提高接口、类、模块的处理能力,减少对外的交互。

接口是对外的承诺,承诺越少对系统的开发越有利,变更的风险也更小,同时也有利于降低成本。

模块服务定制

为了减少模块间的耦合,可以对模块间的类似功能分别定制服务(不共用接口,而是使用专门的接口)

保证接口原子性的规范

一个接口只服务一个子模块业务逻辑

通过优化业务逻辑压缩public方法

接口的粒度太小,会导致接口额数量剧增,对开发人员不友好;接口额粒度太大,灵活性降低,无法提供定制服务,给整体项目带来无法预估的风险。

例讲ISP

定义一个场景,也就是你找工作的时候,简历的筛选,人具有特异性,如果接口的粒度过大,会导致可能无法让A的技能完整呈现,或者不得不吹牛而保证自己所有的技能都被涉及(因为粒度不够细化),也可能分的接口细度过于大,填简历和写一本书一样的成本,那哪里还会有人来应聘,去卖书不好吗~就不实现了,完全没有任何代码难度…….

往往接口的粒度合适不合适和场景是密切相关的,这就要看设计者的能力了,一些设计模式的广泛应用也和他们的接口设计的恰到好处有关系。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息