架构整洁之道-07 设计原则-接口隔离原则SIP

简介: 接口隔离原则 Interface Segregation Principle,ISP- 客户端不应该依赖它不需要的接口- 类间的依赖关系应该建立在最小的接口上

接口隔离

接口隔离原则 Interface Segregation Principle,ISP

  • 客户端不应该依赖它不需要的接口
  • 类间的依赖关系应该建立在最小的接口上

我的理解,在定义接口时方法应该尽量的少,且一个接口对于一个功能模块,避免出现某类实现接口,但仅使用接口中一个方法,或者避免出现一个接口中出现很多个方法,多个功能模块都去访问该接口。

所以,将接口尽量保持小颗粒度,不增加无用的方法,这样在实现接口或继承抽象类时,子类可以灵活扩展增加自己方法和实现自己的功能。如果基类的划分比较大的功能,就会导致子类扩展性变得比较差。

interface Reader{
  read():void;
  write():void;
  trim():void;
}

Reader类赋予了read方法,write方法,trim方法,但如果某具体Reader子类只需要Read方法,而其他的方法对其时无用,却仍需要实现它们。这就违反了接口隔离原则。可以继续划分其颗粒,通过三个接口来代替原Reader接口,这三个接口的方法的粒度更小,对功能也是更清晰。

如何正确使用接口隔离原则

  • 根据接口隔离原则拆解接口时,必须优先满足单一职责。因在某些业务场景中可能确实需要比较多方法,单一职责必然会与接口隔离原则产生冲突,接口应该是针对某功能模块去划分,即一个接口只服务一个字模块或业务逻辑
  • 为依赖接口的类定制服务。即只提供调用者需要的方法,屏蔽不需要的方法
  • 提高内聚,减少对外的交互,使接口用最少的方法完成最多事情

你会发现接口隔离原则 与 单一职责原则都是在强调如何正确去使用接口,但是它们之间时存在区别的:

  • 单一职责要求类和接口职责单一,是对业务逻辑的划分
  • 接口隔离要求接口中方法尽量少,是对接口的设计考虑
目录
相关文章
|
3月前
|
前端开发 Java 测试技术
使用整洁架构优化你的 Gradle Module
使用整洁架构优化你的 Gradle Module
63 0
|
10月前
|
存储 Go 数据处理
Go 语言整洁架构实践
Go 语言整洁架构实践
73 0
|
6天前
|
消息中间件 监控 API
深入浅出微服务架构设计原则
在软件开发的宇宙中,微服务如星辰般璀璨,引领着分布式系统的航向。本文将带你穿梭于微服务的星系,探索其背后的设计哲学与实践精髓,从服务边界的划分到数据一致性的保障,再到服务的通信与协作,我们将一同揭开微服务架构高效、可扩展且灵活的秘密。
16 4
|
7天前
|
消息中间件 设计模式 API
后端开发中的微服务架构设计原则
【8月更文挑战第13天】在软件工程的世界中,微服务架构已经成为一种流行的设计模式,它通过将复杂的应用程序分解成一组小的服务来简化开发和部署。本文探讨了微服务背后的设计理念,以及如何在后端开发实践中应用这些原则来构建可扩展、灵活且易于维护的系统。我们将深入讨论服务的划分、通信协议的选择、数据一致性的保障以及容错性策略的实施,旨在为后端开发人员提供一套实用的微服务架构设计指导。
18 1
|
3月前
|
数据中心 网络架构 Python
【计算巢】数据中心的网络架构设计原则
【5月更文挑战第31天】探讨数据中心网络架构设计原则:稳定性是基础,需抵御各种挑战;强调扩展性,适应业务发展;追求高效,确保数据传输速度;注重灵活性,灵活应对变化。简单Python代码示例展示网络节点连接。设计时需具备长远眼光,综合考虑技术方案,以构建坚固高效的信息桥梁。同学们,要持续学习和探索,为信息世界贡献力量!
50 2
|
3月前
|
监控 安全 API
微服务架构下的API网关设计原则
【5月更文挑战第31天】在本文中,我们将深入探讨微服务架构下API网关的设计原则。API网关作为微服务架构的入口点,其设计至关重要。我们将从性能、安全性、可扩展性等方面进行分析,并提出一些实用的设计建议。
|
3月前
|
存储 缓存 运维
云计算架构设计原则
【4月更文挑战第6天】这篇文章介绍了基于云计算的架构设计六大原则:合理部署、业务持续、弹性扩展、性能效率、安全合规和持续运营。
|
12月前
|
设计模式 关系型数据库 数据安全/隐私保护
软件架构设计原则之单一职责原则
单一职责(Simple Responsibility Pinciple,SRP)是指不要存在多于一个导致类变更的原因。假设我们有一个类负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能导致另一个职责的功能发生故障。这样一来,这个类就存在两个导致类变更的原因。如何解决这个问题呢?将两个职责用两个类来实现,进行解耦。后期需求变更维护互不影响。这样的设计,可以降低类的复杂度,提高类的可读性,提高系统的可维护性,降低变更引起的风险。总体来说,就是一个类、接口或方法只负责一项职责。
92 0
软件架构设计原则之单一职责原则
|
12月前
|
设计模式 人工智能 Java
软件架构设计原则之依赖倒置原则
依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,高层模块不应该依赖低层模块,二者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。通过依赖倒置,可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并且能够降低修改程序所造成的风险。接下来看一个案例,还是以Course(课程)为例,先来创建一个类Tom:
75 0
|
3月前
|
存储 关系型数据库 uml
00003.七大软件架构设计原则
00003.七大软件架构设计原则
56 0