什么是内聚和耦合? 耦合是什么意思


在软件设计中应当坚持模块的独立性原则 。反应模块独立性有两个尺度:内聚和耦合 。内聚权衡一个模块内部各个元素彼此联合的紧密水平,耦合权衡模块之间彼此依附的水平 。
耦合耦合是指模块间相互关联的水平 。模块间的关联水平取决于下面几点:
【什么是内聚和耦合? 耦合是什么意思】一个模块对另一个模块的拜访 。比如,模块A可能要调用模块B来完成一个功效,所以说模块A要依附于模块B完成它的功效 。
模块间传递的数据量 。
一个模块传递给另一个模块的掌握信息 。
模块间接口的庞杂水平 。
依据这几点可将耦合分为7类:

什么是内聚和耦合? 耦合是什么意思

文章插图


内容耦合:
如果一个模块直接引用另一个模块的内容,则这两个模块是内容耦合 。
公共耦合:
如果多个模块都拜访同一个公共数据环境,则称它们是公共耦合 。公共数据环境可以是全局数据构造、共享的通讯区、内存的公共笼罩区等 。由于多个模块共享同一个公共数据环境,如果其中一个模块对数据进行了修正,则会影响到所有相干模块 。
外部耦合:
如果两个模块都拜访同一个全局简略变量而不是同一全局数据构造,则这两个模块属于外部耦合 。
掌握耦合:
如果模块A向模块B传递一个掌握信息,则称这两个模块是掌握耦合的 。例如,把一个函数名作为参数传递给另一个模块时,实际上就掌握了另一个模资源网块的履行逻辑 。掌握耦合的重要问题是两个模块不是相互独立的,调用模块必需知道被调用模块的内部构造和逻辑,这样就不符合信息隐蔽和抽象的设计原则,并且也下降了模块的可重用性 。
数据构造耦合:
当一个模块调用另一个模块时传递了全部数据构造,那么这两个模块之间具有数据构造耦合 。
数据耦合:
如果两个模块传递的是数据项,则这两个模块是数据耦合 。
非直接耦合:
如果两个模块之间没有直接关系,它们之间的接洽完整通过主模块的掌握和调用来实现,这就是非直接耦合 。
上面的几种耦合中,内容耦合是模块间最紧密的耦合,非直接耦合是模块间最松散的耦合 。软件设计的目的是下降模块间的耦合水平,设计时应当采用这样的设计原则:尽量应用数据耦合,少用掌握耦合,限制公共耦合,坚决不用内容耦合 。
内聚内聚是指一个模块内部各元素之间关系的紧密水平 。内聚分为7种类型 。下面分离讨论各种内聚的含义及其对软件独立性的影响 。
什么是内聚和耦合? 耦合是什么意思

文章插图


偶合内聚:
一个模块履行多个完整互不相干的动作,那么这个模块就有偶合内聚 。
逻辑内聚:
当一个模块履行一系列资源网相干的动作时,称其有逻辑内聚 。例如,一个模块履行对主文件的插入、删除和修正操作 。一般逻辑内聚的模块含有太多的相干功效,一个模块含有较多的功效时,模块的入口参数必定比拟多,通常是依据入口参数决议履行模块中的哪个功效 。所以,逻辑内聚模块带来两个问题:一个是接口参数庞杂,难于懂得;另一个是多个功效纠缠在一起,使得模块的可保护性下降 。
时光内聚:
当一个模块内的多个义务与时光有关时,这个模块具有时光内聚 。最常见的时光内聚模块是初始化模块,在这个模块中的动作之间,除了时光上须要在体系初启时完成之外,没有其他的关系 。
进程内聚:
模块履行的若干动作之间相互关联并且有次序关系 。例如,从录入界面读取数据,然后更新数据库记载 。它仍然是将多个相干的功效放在一个模块中实现 。
通信内聚:
模块中所有元素都应用同一个输入数据或发生同一个输出数据 。
次序内聚:
如果一个模块中的处置元素和同一个功效亲密相干,并且这些处置必需是次序履行的,那么这个模块具有次序内聚 。
功效内聚:
一个模块中各个部分都是完成某一具体功效必不可少的组成部分 。这些部分相互调和工作,紧密接洽,不可分割,目标是完成一个完全的功效 。具有功效内聚的模块是最幻想的模块,这种模块易于懂得和保护资源网,并且它的可重用性好 。
上述7种内聚中,功效内聚模块的独立性最强,偶合内聚模块的独立性最弱 。在设计时应当尽可能保证模块具有功效内聚 。


推荐阅读