关于高内聚低耦合的理解

目录

一、高内聚低耦合

二、耦合度

三、内聚度

一、高内聚低耦合

    软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准,良好的系统设计模块之间的耦合度一定要低、模块内的内聚度一定要高,也就是高内聚低耦合。形象的说就是,写的代码要和电脑一样,主类就是电脑的主机箱,当程序需要实现什么功能的时候只需要把其他的类引入即可,就像主机箱需要内存条运行程序、硬盘存储数据、USB接口实现输入输出、CPU实现计算,主类加入这些功能类即可。例如,一个程序有50个函数,这个程序执行得非常好,然而一旦你修改其中一个函数,其他49个函数都需要做修改,这就是高耦合的后果。每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单

二、耦合度

    耦合度是对模块间关联程度的度量,模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系,模块间联系越多,耦合性越强,模块的独立性越差。模块间可能的连接方式有七种,所以形成了七种耦合类型,分别如下:

    非直接耦合

    如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合,这种耦合的模块独立性最强。

    印记耦合
    如果一组模块通过参数表传递记录信息,就是标记耦合。事实上,这组模块共享了这个记录,它是某一数据结构的子结构,而不是简单变量。这要求这些模块都必须清楚该记录的结构,并按结构要求对此记录进行操作。在设计中应尽量避免这种耦合,它使在数据结构上的操作复杂化了。如果采取“信息隐蔽”的方法,把在数据结构上的操作全部集中。
    控制耦合
    如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。这种耦合的实质是在单一接口上选择多功能模块中的某项功能。控制耦合也意味着控制模块必须知道所控制模块内部的一些逻辑关系,这些都会降低模块的独立性。
     外部耦合
    一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。例如C中各个模块都访问被说明为extern类型的外部变量。外部耦合引起的问题类似于公共耦合,区别在于在外部耦合中不存在依赖于一个数据结构内部各项的物理安排。
    公共耦合
    若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共复盖区等。 这种耦合会引起下列问题:所有公共耦合模块都与某一个公共数据环境内部各项的物理安排有关,若修改某个数据的大小,将会影响到所有的模块。无法控制各个模块对公共数据的存取,严重影响软件模块的可靠性和适应性。公共数据名的使用,明显降低了程序的可读性。公共耦合的复杂程度随耦合模块的个数增加而显着增加。
    内容耦合
 如果发生下列情形,两个模块之间就发生了内容耦合。一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一模块内部;两个模块有一部分程序代码重叠(只可能出现在汇编语言中)。

三、内聚度

    内聚度是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好只做一件事,高内聚就是一个类封装的很完善,每个类只完成一项任务,也就是常说的单一责任原则

    原文作者:喜六六
    原文地址: https://blog.csdn.net/qq_29078329/article/details/78500965
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞