首页 > 其他分享 >高内聚,低耦合的解释及实例【包学包会】

高内聚,低耦合的解释及实例【包学包会】

时间:2024-07-18 20:28:00浏览次数:12  
标签:内聚 功能 包学 包会 订单 模块 支付 耦合

高内聚 (High Cohesion)

定义: 高内聚指的是模块内部各个部分之间的联系紧密,功能高度相关。一个高内聚的模块,其内部的各个功能都是围绕着一个单一的任务或目的来设计的。

优点:

  1. 易于理解和维护:由于模块内部功能相关,理解和修改这个模块的代码变得更加容易。
  2. 增强代码复用性:模块的功能明确,可以更方便地在其他项目中复用。
  3. 减少错误传播:模块内部发生错误时,不会轻易影响到其他模块。

例子: 假设有一个软件系统处理订单。一个高内聚的模块可能是一个专门处理订单支付的模块。这个模块包含了所有与支付相关的功能,例如验证支付信息、处理支付交易、记录支付日志等。所有这些功能都是围绕“支付”这个单一任务进行的。

低耦合 (Low Coupling)

定义: 低耦合指的是模块之间的联系尽可能地少和松散。模块之间通过简单的接口进行交互,彼此之间的依赖性很低。

优点:

  1. 增强系统的可维护性:由于模块之间的依赖性低,修改一个模块时,不太容易影响其他模块。
  2. 提高模块的独立性:模块可以独立开发、测试和部署。
  3. 增强系统的灵活性:可以更容易地替换或升级单个模块,而不需要对整个系统进行大规模修改。

例子: 继续上面的订单处理系统,假设我们有另一个模块处理订单的发货。一个低耦合的设计可能是支付模块和发货模块通过一个消息队列进行通信。当支付完成时,支付模块发送一个“支付成功”的消息到消息队列,发货模块监听这个消息并处理相应的发货逻辑。通过这种方式,支付模块和发货模块之间没有直接的依赖关系,只通过消息队列进行简单的交互,实现了低耦合。

综合实例

场景:网上购物系统

  1. 高内聚模块:

    • 用户管理模块:包含用户注册、登录、修改个人信息等功能。所有功能都围绕着用户管理这一核心任务。
    • 订单处理模块:包括订单创建、订单查询、订单取消等功能。所有功能都围绕订单处理这一任务。
  2. 低耦合设计:

    • 模块间通信:用户下订单时,订单处理模块通过接口通知库存管理模块扣减库存。接口设计简单且清晰,各模块独立实现。
    • 独立部署:各个模块(如用户管理、订单处理、库存管理)可以独立部署和更新,互不影响。

通过高内聚和低耦合的设计,可以实现系统的灵活性、可维护性和可靠性。

标签:内聚,功能,包学,包会,订单,模块,支付,耦合
From: https://blog.csdn.net/zss6666yi/article/details/140513129

相关文章

  • 包教包会,手把手教你配置NetBeans IDE
    文章目录引言1.安装NetBeans1.1下载与安装1.2初次启动2.基本配置2.1设置界面2.2常用配置项3.创建与管理项目3.1创建新项目3.2配置项目结构4.安装和配置插件4.1安装插件4.2推荐插件4.3配置插件5.主题与配色方案5.1安装主题5.2切换主题5.3自定义配色......
  • 新手小白包会(python) | OpenCV进阶教程,带你踏入计算机视觉领域
    目录一、OpenCV简介1.应用场景2.学习与使用二、OpenCV安装 1.安装2.验证三、OpenCV使用1.边缘检测1)sobel算子(cv2.Sobel()) 2)Scharr算子(cv.Scharr()) 3)laplacian(cv2.Laplacian())4)canny算法(cv.Canny())2.下采样(cv2.pyrDown())3.上采样(cv2.pyrUp())4.拉普拉斯金字塔......
  • 软件工程——内聚性和耦合性
    一、耦合性耦合性指软件结构中模块相互紧密连接的紧密程度。耦合性由高到低分别为:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合。1.内容耦合:一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一模块的内部;一个模块有多个......
  • wireshark抓包学习
    ip过滤ip.src_hostip.dst_hostip.addrmac过滤eth.srceth.dsteth.addr端口过滤tcp.porttcp.srcporttcp.dstport协议类型过滤arpdhcp规则组合andor文件导出导出特定分组allpackets为把抓到的所有包都保存而selectpacket为保存我们鼠标点击选中的包......
  • 承包学校洗衣房如何运营成功
    近年来,校园洗衣模式的升级版——共享智能柜+校园洗衣工厂,受到社会上越来越多人的关注。除了校方和学生外,很多有学校资源的创业者、投资商,也都对校园智能洗衣格外感兴趣,有一部分已经在当地建设了校园智能洗衣工厂,着手推进项目了。然而,由于先前没有做过做过校园洗衣生意,很多......
  • 数据结构之顺序表(包学包会版)
    目录1.线性表2.顺序表2.1概念及结构2.2接口实现3.总结halo,又和大家见面了,今天要给大家分享的是顺序表的知识,跟着我的脚步,包学包会哦~规矩不乱,先赞后看!ps:(孙权劝学)1.线性表线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常......
  • 凸包学习笔记
    凸包一般通过证明或观察出斜率有单调性于是可以用凸包维护。P5155[USACO18DEC]BalanceBeamP题意:有长为\(n\)的序列,每次等概率向左右移动一格,也可以结束并获得当前位置上的值,求每个位置的最大期望收益。思路:完全不懂期望!首先有一个结论,在\([0,L]\)上的\(x\)处,每次等概率向......
  • 【愚公系列】2023年12月 通用职责分配原则(四)-高内聚原则(High Cohesion Principle)
    ......
  • 如何使用JMeter测试https请求?800字教程包教包会!
    HTTP与HTTPS略有不同,所以第一次使用JMeter测试https请求时遇到了问题,百度一番后找到解决方法:加载证书。下面内容主要记录这次操作,便于后续参考:操作浏览器:谷歌(1)下载被测网站证书,点击安全锁,选择安全证书 (2)查看证书的详细信息,显示所有后点击复制到文件(3)依次下一步,选择DER编......
  • 【Spring】一次性打包学透 Spring | 阿Q送书第五期
    文章目录如何竭尽可能确保大家学透Spring1.内容全面且细致2.主题实用且本土化3.案例系统且完善4.知识有趣且深刻关于作者丁雪丰业内专家推图书热卖留言提前获赠书不知从何时开始,Spring这个词开始频繁地出现在Java服务端开发者的日常工作中,很多Java开发者从工作的第一天......