
七种耦合

一. 无耦合(无直接耦合/非直接耦合)
**两个模块之间没有直接的关系,它们分别被不同模块的控制与调用,它们之间不传递任何信息。**但这在实际中很难完全做到。按常说的"六种耦合、七种内聚"来看,这种情况也可以认为并不算一种耦合。无耦合的模块间耦合性最弱,模块独立性最高。
例题1
例如,系统中的**"用户登录验证模块"** 和**"报表打印模块"**分别由不同的上层流程调用,二者之间既不直接调用,也不传递任何数据或共享信息,可视为无耦合。
二. 数据耦合
指两个模块之间有调用关系,传递的是简单的数据值(而不是数据结构),相当于高级语言中的值传递。
例题1
主程序调用"加法模块"时只传入两个整数
a和b,并接收返回的整数和,而不传递数组、结构体等数据结构,这就是数据耦合。
三. 标记耦合
又叫特征耦合 ,指两个模块之间传递的是数据结构。
例题1
例如,订单处理模块把包含订单号、客户信息和明细的整个"订单结构体"作为参数传给发票生成模块,而不是只传订单号或金额等简单数据值,这就属于标记耦合(特征耦合)。
例题2

例题3

四. 控制耦合
指一个模块调用另一个模块时,传递的是控制变量 ,被调用模块通过该控制变量的值有选择地执行模块内的某一功能。
例题1
主程序调用"输出模块"时传入标志变量
type,该模块根据type的值选择执行打印报表还是打印标签,这就属于控制耦合。
例题2

五. 外部耦合
模块间通过**软件之外的环境联结(如IO将模块耦合到特定的设备、格式、通信协议上)**时称为外部耦合。
例题1
例如,一个传感器数据采集模块 被设计为直接通过 I2C 总线协议 读取特定型号温度传感器的数据。这个模块的接口和行为就紧密依赖于该硬件的电气特性和通信协议,一旦更换传感器或总线类型,模块就需要修改,这就构成了外部耦合。
六. 公共耦合
指通过一个公共数据环境 相互作用的那些模块间的耦合。这里的**"公共环境"可包括全局变量、共享数据结构以及存储介质上的文件**等。
例题1

例题2

例题3

七. 内容耦合
当一个模块直接使用另一个模块的内部数据 ,或通过非正常入口转入另一个模块内部时,这种模块之间的耦合称为内容耦合。
例题1

例题2

以上就是本篇文章的全部内容,喜欢的话可以留个免费的关注呦~~~