面向对象设计与分析40讲(4)设计原则之接口分离原则

接口隔离原则(ISP)强调接口的粒度应尽可能小,避免强迫依赖未使用的方法。对比单一职责原则,ISP关注接口的隔离,提高系统内聚性,降低耦合。遵循ISP能增强系统的灵活性和可维护性,减少代码冗余。实践ISP时,应确保接口小而高内聚,客户端只依赖所需接口,接口稳定且易于实现。
摘要由CSDN通过智能技术生成

定义

客户端不应该被迫依赖于它不使用的方法

Clients should not be forced to depend on methods they do not use

一个类对另一个类的依赖应该建立在最小的接口上

The dependency of one class to another one should depend on the smallest possible interface

含义是:要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。

接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。

和单一职责原则对比

接口隔离原则和单一职责都是为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想,但两者是不同的:

  • 单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。
  • 单一职责原则主要是约束类,它针对的是程序中的实现和细节;接口隔离原则主要约束接口,主要针对抽象和程序整体框架的构建。

优点
接口隔离原则是为了约束接口、降低类对接口的依赖性,遵循接口隔离原则有以下 5 个优点。

  • 将臃肿庞大的接口分解为多个粒度小的接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。

  • 接口隔离提高了系统的内聚性,减少了对外交互,降低了系统的耦合性。

  • 如果接口的粒度大小定义合理,能够保证系统的稳定性;但是,如果定义过小,则会造成接口数量过多,使设计复杂化;如果定义太大,灵活性降低,无法提供定制服务,给整体项目带来无法预料的风险。

  • 使用多个专门的接口还能够体现对象的层次,因为可以通过接口的继承,实现对总接口的定义。

  • 能减少项目工程中的代码冗余。过大的大接口里面通常放置许多不用的方法,当实现这个接口的时候,被迫设计冗余的代码。

践行以下几点

在具体应用接口隔离原则时,应该根据以下几个规则来衡量。

在具体应用接口隔离原则时,应该考虑以下几个规则:

  • 接口尽量小:每个接口应该只包含一组相关的方法,不要将不相关的方法混杂在一起。

  • 接口要高内聚:一个接口只负责完成一种操作,并且这些操作在逻辑上彼此紧密相关。

  • 客户端不应依赖它不需要的接口:客户端只应该依赖于它需要使用的接口,而不是所有的接口。

  • 接口要稳定:接口中的方法应该是稳定的,尽可能地减少接口的修改次数,避免对客户端造成过多的影响。

  • 接口要易于实现:设计接口时,应考虑实现接口所需的成本和时间。如果一个接口太难以实现或成本过高,就需要重新考虑接口设计。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值