3,接口隔离原则(Interface Segregation Principle)

concept

Clients should not be forced to depend upon interfaces that they don’t use
不应该强行要求客户端依赖于它们不用的接口
The dependency of one class to another one should depend on the smallest possible interface
类之间的依赖应该建立在最小的接口上面


analyse

  1. 这里的接口并不是狭义的指 Java中用interface定义的接口,而是一种更为宽泛的概念,可以是接口,抽象类或者是实体类
  2. Clients should not be forced to depend upon interfaces that they don’t use:告诉我们,客户端需要什么接口,就依赖什么接口,不需要的就不依赖。如果客户端依赖了他不需要的接口,这样会增加客户端与接口之间耦合程度,显然与“高内聚,低耦合”的思想相矛盾,而且客户端程序就会面临不需要的接口变更引起客户端变更的风险
  3. The dependency of one class to another one should depend on the smallest possible interface :它要求“最小的接口”,也就是该接口中没有多余的方法,所以这里的隔离是指和多余的方法隔离
    4)不要把一大堆方法塞进一个接口里面,导致这个接口变得臃肿无比。应该根据实际需要,让接口中只有用得上的方法,也就是说要细化我们的接口

example


接口隔离原则的要点就是细化我们的接口,这样做的好处是:

  1. 避免我们的接口被污染
    一个类要实现一个接口,就要实现这个接口的所有方法,如果这个接口包含这个类不需要的方法,那么就会对这个接口照成污染,对系统留下隐患
  2. 提高灵活性
    一个类是可以实现多个接口的,我们可以将一个臃肿的接口细分为若干个小接口,通过对小接口的组合可以满足不同的需求
  3. 实现高内聚
    【高类聚:提高接口、类、模块的处理能力,减少对外交互,不讲任何条件,不需要关心细节,立即完成任务的行为就是高内聚的表现】
    接口是对外界的承诺,承诺越少对系统的开发越有利,变更的风险也就越少,同时也有利于降低成本。

接口隔离原则和单一职责原则非常类是,单一职责原则要求接口的职责是单一的,而接口隔离原则要求隔离接口尽量细化。都体现在接口要尽量简单;
但是单一职责原则的着重点在于【职责】,接口隔离原则单纯的要求接口最小化。
如果接口满足了的单一原则,还需要继续最小化吗?是不需要的,在实践中,接口设计的粒度越小,系统越灵活,但灵活的同时也带来了系统的复杂化,导致开发难度增加。所以接口并不是越小越好,必须要有一个度。当单一职责原则和接口隔离原则存在矛盾时,以满足单一职责原则为底线。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值