码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-05-12 11:31:58      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

接口隔离原则(Interface Segregation Principle)

ISP基本概念

接口

  • 实例接口(Object Interface):一个类的实例对象是对一个类型的事物的描述,这时一种接口。
  • 类接口(Class Interface):Java中interface关键定义的接口,也是我们通常理解的狭义的接口

ISP定义

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

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

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

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

保证接口纯洁性的规范

  • 接口细化

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

  • 接口高内聚

    • 高内聚:提高接口、类、模块的处理能力,减少对外的交互。
    • 接口是对外的承诺,承诺越少对系统的开发越有利,变更的风险也更小,同时也有利于降低成本。
  • 模块服务定制

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

保证接口原子性的规范

  • 一个接口只服务一个子模块业务逻辑
  • 通过优化业务逻辑压缩public方法

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

例讲ISP

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

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

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

标签:

原文地址:http://blog.csdn.net/qq_24451605/article/details/51374643

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!