1.1.1. 低耦合
耦合指的两个系统(模块)联系紧密。共7种,除掉无直接耦合和高级语言不存在的内容耦合,共5种。耦合从低到高,分别是:数据耦合、标记耦合、控制耦合、外部耦合、公共耦合。
1. 数据耦合两例
JiSuan(5, 3);
CGouMaiXinXi gouMai = new CGouMaiXinXi();
//...
JiSuan(gouMai);
2. 标记耦合六例
参数是json字符串,如:{"价格":10,"数量":1}
参数为文件名,文件格式是调用方和被调用方约定的。
C#带参数的线程函数,函数的入口参数为object类型;C++的线程入口函数,参数为LPVOID。
调用Com。
halcon的HTuple
_variant_t和VARIANT
3. 控制耦合
移动(方向)
4. 外部耦合
共用一个静态成员变量或全局变量。
5. 公共耦合
访问同一片内存区域。
6. 内容耦合4例
Window2000和Window98,C语言可以直接操作显示内存指针,来改变控制台内容。至少有10%的几率会让操作系统崩溃。
hook技术用于监控软件。
破解软件、逆向工程。
游戏修改,外挂。
7. 各种耦合优缺点
耦合名称 |
优缺点 |
数据耦合 |
如果结构发生变化,编译的时候,就能发现错误。 |
标记耦合 |
如果结构发生变化,运行时才能发现错误。 |
控制耦合 |
控制耦合,大幅降低可测试性。 |
外部耦合 |
不知道会有多少个模块访问,所以确定性弱。相对公共耦合,可以通过访问权限(public、private等)减少风险 |
公共耦合 |
不知道会有多少个模块访问,确定性弱。 |
公共耦合与标记耦合的区别:后者只会在参数、返回值使用共同资源。
耦合只是一方面,具体情况具体分析。比如:标记耦合大大增加了灵活性和互操作性,所以常常用于系统间通信。外部耦合,大大降低了代码量,非常适合于一些质量要求不高的小工具。公共耦合适合的性能要求高的模块,即使是性能要求高的系统,绝大部分模块的性能要求并不高。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~