如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合,它是较好的耦合形式 。
C. 印记(引用)耦合
当模块之间使用复合数据结构进行通信时,就会发生印记耦合 。
复合数据结构可以是数组、类、结构体、联合体等的引用,通过复合数据结构在模块之间传递的参数,可能会或不会被接收模块完全使用 。
印记耦合优点:把模块A的引用一把传递给模块B,模块B只需要接受少量参数,接口说明简单 。
印记耦合缺点:
- 不必要的参数:模块B可能只使用了模块A中部分的数据 。
- 模块B捆绑了模块A:任何需要用到模块B的地方,都需要先获取到模块A,无法脱离模块A单独使用 。
- 修改可能互相影响:修改模块A或模块B,可能导致对方也需要跟着修改,不符合开闭原则 。
d. 控制耦合
如果一个模块通过传送开关、标志等控制信息,明显地控制选择另一模块的功能,就是控制耦合 。
- 数据耦合和控制耦合的主要区别:在数据耦合中,模块之间的依赖关系非常小,而在控制耦合中,模块之间的依赖关系很高 。在数据耦合中,模块之间通过传递数据进行通信,而在控制耦合中,模块之间通过传递模块的控制信息进行通信 。
- 控制耦合优化:把控制的逻辑放在模块A之中,或增加模块C封装控制逻辑,不然模块B只做某一件独立的事情 。
外部耦合,是指多个模块同时依赖同一个外部因素(IO设备/文件/协议/DB等),如上图所示:
外部耦合与与外部设备的通信有关,而不是与公共数据或数据流有关 。
一个模块对外部数据或通信协议所做的任何更改都会影响其他模块,可以通过增加中间模块隔离外部变化来降低耦合度,如下:
f. 共用耦合
共用耦合是指不同的模块共享全局数据的信息(全局数据结构、共享的通信区、内存的公共覆盖区) 。
共用耦合的问题:
- 较难控制各个模块对公共数据的存取,容易影响模块的可靠性和适应性 。
- 使软件的可维护性变差,若一个模块修改了共用数据,则会影响相关模块 。
- 降低了软件的可理解性,不容易清楚知道哪些数据被哪些模块所共享,排错困难 。
内容耦合在低级语言(汇编)中出现,高级语言从设计上已避免出现内容耦合 。
如果发生下列情形,两个模块之间就发生了内容耦合:
推荐阅读
- 车辆识别代码是什么意思
- 音序怎么写在四线格里 音序怎么写
- 2022年各高校专业代码四位数 2022年各高校专业代码
- 诗歌的特征包括 诗歌的特征包括哪四个
- 新课程教学反思中的问题有哪些
- 幼儿园教学经验总结 教师个人教学经验总结
- 罗牛山学校教学质量怎么样
- 月份天数口诀手指视频 月份天数口诀歌
- python编程入门自学 游戏代码大全可复制免费
- 教学过程的本质表现在哪些方面 教学过程的本质属性是