通俗理解“高内聚,低耦合”

article/2025/6/25 17:11:12

在软件开发中,良好的架构设计能够大幅降低系统的复杂度,提高代码的可维护性。而“高内聚,低耦合”正是指导我们如何合理组织代码的核心原则之一。本文将从通俗的角度解释这一概念,并结合实际案例说明其重要性。

一,高内聚:该放一起的要放到一起

高内聚(High Cohesion) 指的是一个模块(类、函数、组件)内部的各个元素(方法、变量)紧密相关,共同完成一个明确的任务。

厨房的比喻:厨房里的工具(刀、砧板、锅)都是为了“烹饪”这一目标服务的,它们紧密相关,这就是高内聚。

如果厨房里混入了办公用品(电脑、文件夹),那就破坏了内聚性,导致功能混乱

二,低耦合:不该放一起的就要分隔开,少联系

低耦合(Low Coupling) 指的是模块之间的依赖关系尽可能少,修改一个模块时,不会对其他模块造成太大影响。

公司部门的比喻:市场部、技术部、财务部各自独立运作,通过标准流程(API)协作,而不是直接插手对方的工作。

如果市场部直接修改技术部的代码,那就会导致混乱,难以维护。

代码示例

高耦合的设计(不推荐):

class OrderService {private Database db = new MySQLDatabase();  // 直接依赖具体实现public void saveOrder() { db.save(); }
}

低耦合的设计(推荐):

interface Database {void save();
}class MySQLDatabase implements Database { /* ... */ }class OrderService {private Database db;  // 依赖抽象,而非具体实现public OrderService(Database db) { this.db = db; }  // 依赖注入public void saveOrder() { db.save(); }
}

这样,OrderService 不直接依赖 MySQLDatabase,而是通过接口交互,未来可以轻松替换为 PostgreSQLDatabase 或其他存储方式。

三,高内聚与低耦合的关系

高内聚: 关注的是模块内部的组织方式,确保功能单一、职责清晰。

低耦合 :关注的是模块之间的交互方式,确保依赖最小化。

两者相辅相成:高内聚的模块自然倾向于低耦合,因为它们只关注自己的职责,不会过度依赖外部。

四,实际应用场景

1 微服务架构

  • 高内聚:每个微服务只负责一个业务领域(如订单服务、支付服务)。

  • 低耦合:服务之间通过 API(REST/gRPC)通信,而不是直接访问对方的数据库。

2 前端组件化(如 React/Vue)

  • 高内聚:一个组件只负责渲染特定 UI(如 Button 组件只处理点击样式)。

  • 低耦合:组件之间通过 Props/Events 通信,而不是直接修改对方的状态。

五,如何实现高内聚低耦合?

  1. 单一职责原则(SRP):一个类/模块只做一件事。

  2. 依赖倒置原则(DIP):依赖抽象,而非具体实现。

  3. 接口隔离原则(ISP):不要强迫模块依赖它不需要的接口。

  4. 使用设计模式:如工厂模式、观察者模式等,减少直接依赖。


http://www.hkcw.cn/article/PDIgBCiQLe.shtml

相关文章

Unity + HybirdCLR热更新 入门篇

官方文档 HybridCLR | HybridCLRhttps://hybridclr.doc.code-philosophy.com/docs/intro 什么是HybirdCLR? HybridCLR(原名 huatuo)是一个专为 Unity 项目设计的C#热更新解决方案,它通过扩展 IL2CPP 运行时,使其支持动态加载和…

Python基础:人生重开模拟器(小游戏)

引言 手把手带你速通Python 实现人生重开模拟器(小游戏)的意义:增强对条件语句,循环语句的运用,增加写代码的乐趣。 一、 游戏介绍 网页版的人生重开模拟器: 人生重开模拟器-重来-重启 (aizhancloud.cn) …

【Elasticsearch】ILM(Index Lifecycle Management)策略详解

ILM(Index Lifecycle Management)策略详解 1.什么是 ILM 策略?2.ILM 解决的核心业务问题3.ILM 生命周期阶段3.1 Hot(热阶段)3.2 Warm(温阶段)3.3 Cold(冷阶段)3.4 Delete…

【存储基础】数据存储基础知识

文章目录 1. 概述:数据存储基础知识2. 存储物理介质3. 数据存储的分类3.1按存储架构分类DAS 直连存储SAN 存储区域网络NAS 网络附加存储分布式存储四种架构之间的核心区别 3.2 按数据模型分类块存储文件存储对象存储 4. 数据存储的关键技术方案和核心机制冗余与容错…

【Part 3 Unity VR眼镜端播放器开发与优化】第二节|VR眼镜端的开发适配与交互设计

文章目录 《VR 360全景视频开发》专栏Part 3|Unity VR眼镜端播放器开发与优化第一节|基于Unity的360全景视频播放实现方案第二节|VR眼镜端的开发适配与交互设计一、Unity XR开发环境与设备适配1.1 启用XR Plugin Management1.2 配置OpenXR与平…

小米YU7还有5款颜色即将发布 更多色彩敬请期待

6月1日,小米在5月22日的发布会上公布了YU7的四款颜色:钛金属色、宝石绿、熔岩橙和寒武岩灰。官方透露,除了这四款已发布的颜色外,还有五款新颜色即将推出,每一种都设计得非常经典。回顾之前的小米SU7,在刚推出时就提供了9种颜色选择,涵盖了跑车色系、时尚色系、豪华色系…

老人被甩客执法人员送其回家 温情护送获赠枇杷

日前,重庆交通执法总队轨道交通支队三大队在重庆西站巡查时发现一名老人误乘“黑车”。考虑到她年近九旬行动不便,执法人员开车将其安全护送回家。老人感激地拿出自己种的枇杷送给执法人员以示感谢。5月27日上午,执法人员在巡查过程中发现一辆渝A籍车辆正在下客,随即上前检…

2025最新 MacBook Pro苹果电脑M系列芯片安装zsh教程方法大全

2025最新 MacBook Pro苹果电脑M系列芯片安装zsh教程方法大全 本文面向对 macOS 环境和终端操作尚不熟悉的“小白”用户。我们将从最基础的概念讲起,结合实际操作步骤,帮助你在 2025 年最新 MacBook Pro(搭载苹果 M 系列芯片)的环境…

女子多次上门骚扰邻居 持刀砍门引发恐慌

近日,辽宁大连有网友发布视频称,疑似患有精神疾病的邻居多次持刀上门砍其家门。当事人刘女士向媒体透露,楼下60多岁的邻居自去年10月搬家入住后,就反复上门找事,声称刘女士一家是脑控组织,想要入侵她的大脑。刘女士表示自己是外地人,去年刚搬进来,为方便孩子上学才购买…

遥控器竟牵出10亿元大案 数据篡改揭秘

涉及河南、四川、浙江等16省市,涉案交易金额达10.3亿元的合同诈骗案成功告破。内蒙古自治区鄂尔多斯市杭锦旗警方通过流量计调节流量和篡改数据的方式,将27名犯罪嫌疑人全部抓获。2024年3月,一封匿名举报信揭露了某石油工程有限公司通过更改流量计数据窃取国家能源的行为。杭…

弗朗西斯卡说樊振东加盟像做梦一样 莫大荣耀与期待

6月2日,据外媒报道,队长弗朗西斯卡在接受采访时谈到夺冠以及樊振东加盟表示:“感觉像做梦一样,樊振东加盟是我们莫大的荣耀。”决赛周末俱乐部宣布了轰动消息,奥运冠军兼前世界冠军樊振东将代表球队出战全部三项赛事。对于下赛季谁能击败他们的问题,弗朗西斯卡表示这取决…

董宇辉在陕西汉江赛龙舟夺冠 体验传统民俗乐趣

5月31日,陕西安康第25届汉江龙舟节开幕。当日,龙舟方阵展演,龙舟横渡汉江,抢鸭子、摸鲤鱼等传统环节亮相开幕式,节日氛围浓厚。今年有27支队伍600多名选手参加龙舟竞渡比赛。董宇辉现身安康龙舟文化园,与现场市民、游客热情互动,齐喊端午安康。他和团队成员在汉江边进行…

租客退房现垃圾场 下水道都堵了 屋内堆满垃圾几乎无处下脚

山东潍坊一名租客租住半年退房时,房东发现屋内堆满生活垃圾。发布视频的当地民宿工作人员称租客是一名年轻女生,房东已报警。辖区派出所表示正在处理此事。5月31日,抖音实名认证的潍坊潍城区怀夏民宿发布了一段54秒的现场视频,显示屋内一片狼藉,堆满了生活垃圾,几乎无处下…

上迪情侣和一家三口扭打 拍照冲突引发热议

5月31日,有网友发布视频称,在上海迪士尼乐园内一对情侣与一家三口发生冲突并扭打在一起,此事引发广泛关注。视频中可以看到双方在现场互相推搡,周围游客纷纷上前劝阻。据权威人士透露,事件发生在5月31日,地点并非排队区域,而是游客自由拍照的点位。情侣和一家三口因拍照…

北京大兴警方严查炸街摩托 夜查行动见效

大兴公安分局针对南海子公园南环路牡丹园南广场区域夜间改装摩托车聚集扰民问题,开展了专项整治行动。这些非法改装的摩托车不仅存在安全隐患,其巨大的噪音也严重干扰了周边居民的生活。5月30日晚,大兴交通支队旧宫中队在“炸街车”夜间活动高发时段,科学部署警力,采取定点…

AI矢量软件|Illustrator 2025网盘下载与安装教程指南

说起AI,很多人第一印象可能是AI人工智能,是与Python相关。实际上,本文要讲的AI,是Adobe Illustrator的缩写,它是一款基于矢量的图形制作软件,主要应用于插画、包装、印刷出版、书籍排版、动画和网页制作等领…

【Spring】RAG 知识库基础

1. RAG 基础概念 1.1 什么是 RAG? RAG(Retrieval-Augmented Generation,检索增强生成)是一种将检索技术与人工智能生成技术相结合的混合架构,用于解决大模型时效性限制与幻觉问题 你可以这样理解:RAG 技…

NLP学习路线图(十七):主题模型(LDA)

在浩瀚的文本海洋中航行,人类大脑天然具备发现主题的能力——翻阅几份报纸,我们迅速辨别出"政治"、"体育"、"科技"等板块;浏览社交媒体,我们下意识区分出美食分享、旅行见闻或科技测评。但机器如何…

信息安全管理与评估山东卷无线部分答案

配置解析 配置解析 配置解析 radio 1工作在2.4g频段下 radio 2工作在5.0g频段下 配置解析 station-isolation配置关联在同一个VAP下的用户无法互通,但是可以和其他VAP下关联的用户互通,这里的隔离功能类似于交换的端口隔离功能。 arp-suppression开启该功能后则自动使能ARP…

Netty学习example示例

文章目录 simpleServer端NettyServerNettyServerHandler Client端NettyClientNettyClientHandler tcp(粘包和拆包)Server端NettyTcpServerNettyTcpServerHandler Client端NettyTcpClientNettyTcpClientHandler protocolcodecCustomMessageDecoderCustomM…