当前位置: 首页 > news >正文

面向对象设计原则之接口隔离原则

目录

  • 定义
  • 接口隔离原则与单一职责原则
  • 示例

定义

接口隔离原则,全称为 Interface Segregation Principle,缩写ISP。

  • 原始定义: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。
    翻译: 类之间的依赖应该建立在最小的接口上面。

总结:
客户端需要什么功能,就提供什么接口,对于客户端不需要的接口不应该强行要求其依赖;类之间的依赖应该建立在最小的接口上面,这里最小的粒度取决于单一职责原则的划分。

接口隔离原则与单一职责原则

从功能上看有相似性,但有区别如下:

  • 从原则约束的侧重点来说,接口隔离原则更关注的是接口依赖程度的隔离,更加关注接口的“高内聚”;而单一职责原则更加注重的是接口职责的划分。

  • 从接口的细化程度来说,单一职责原则对接口的划分更加精细,而接口隔离原则注重的是相同功能的接口的隔离。接口隔离里面的最小接口有时可以是多个单一职责的公共接口。

  • 单一职责原则更加偏向对业务的约束,接口隔离原则更加偏向设计架构的约束。这个应该好理解,职责是根据业务功能来划分的,所以单一原则更加偏向业务;而接口隔离更多是为了“高内聚”,偏向架构的设计。

示例

示例参考 文章 https://blog.csdn.net/u011385940/article/details/124137704

接口隔离原则认为不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口要好。做接口拆分时,也要尽量满足单一职责原则。将外部依赖减到最少,降低模块间的耦合。

比如类A只需要使用方法1、方法3,类B只需要使用方法2、方法4,但在源代码层次上与所有方法形成依赖关系。这种依赖意味着我们对接口I的方法2修改,即使不会影响A所依赖的方法1、方法3的功能,也会导致它需要重新部署和编译。

在这里插入图片描述

改造后,类A不需要用到方法2、方法4,就可以选择不依赖它们。代码更加清晰,接口职责更加明确。

在这里插入图片描述

http://www.lryc.cn/news/207648.html

相关文章:

  • haproxy 负载均衡
  • 在el-dialog中使用tinymce 点击工具栏下拉框被遮挡
  • CloudQuery + StarRocks:打造高效、安全的数据库管控新模式
  • 各类统计模型R语言的详细使用教程-R语言的线性回归使用教程
  • 点云从入门到精通技术详解100篇-基于尺度统一的三维激光点云与高清影像配准
  • <蓝桥杯软件赛>零基础备赛20周--第2周
  • CMake多文件构建初步
  • 游戏研发的解决方案有哪些?
  • Bayes决策:身高与体重特征进行性别分类
  • 【考研数学】数学“背诵”手册 | 需要记忆且容易遗忘的知识点
  • HJ3 明明的随机数
  • 如何恢复u盘删除文件?2023最新分享四种方法恢复文件
  • 8.稳定性专题
  • 基于51单片机的四种波形信号发生器仿真设计(仿真+程序源码+设计说明书+讲解视频)
  • 不同网段的IP怎么互通
  • C#序列化与反序列化详解
  • 如何在k8s的Java服务镜像(Linux)中设置中文字体
  • CT 扫描的 3D 图像分类-预测肺炎的存在
  • 整合管理案例题分析
  • mysql4
  • Python深度学习实战-基于tensorflow原生代码搭建BP神经网络实现分类任务(附源码和实现效果)
  • PDF 文档处理:使用 Java 对比 PDF 找出内容差异
  • 压敏电阻有哪些原理?|深圳比创达电子EMC
  • 【计算机网络笔记】Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
  • IDEA 2023.2.2 使用 Scala 编译报错 No scalac found to compile scala sources
  • C51--PWN-舵机控制
  • electron27+react18集成搭建跨平台应用|electron窗口多开
  • 【k8s】kubeadm安装k8s集群
  • 三、虚拟机的迁移和删除
  • RabbitMQ的交换机(原理及代码实现)