耦合和凝聚力

Jon*_*han 66 architecture theory oop ooad

我试图将耦合和内聚的概念归结为简洁的定义.有人可以给我一个简短易懂的解释(比这里这里维基百科的定义更短)?他们如何互动?

谢谢.

有人有一个好的,简短的例子吗?

Sho*_*og9 202

耦合

  • 松散:你和便利店里的那个人.你通过一个定义明确的协议进行沟通,以实现你各自的目标 - 你付钱,他让你走出Cheetos包.您可以在不中断系统的情况下更换其中任何一个.

  • 紧:你和你的妻子.

凝聚

  • 低:便利店.你可以去那里买各种东西,从燃气到牛奶再到ATM银行.产品和服务几乎没有共同点,将它们集中在一个地方的便利可能不足以抵消由此带来的成本增加和质量下降.

  • 高:奶酪店.他们卖奶酪.没有其他的.但是,当涉及到奶酪时,无法击败他们.

  • 嗯,我期待着一个高凝聚力的妻子榜样,我不得不说,我有点失望:) (20认同)

Tho*_*ens 65

耦合 - 衡量模块(包,类,方法)依赖其他模块的程度.期望减少耦合,或减少给定模块依赖于系统的其他模块的量.

凝聚 - 如何密切相关的成员的模块的(类,方法,方法中的功能性)的度量是在同一模块中的其他成员.期望增加内聚力,因为这表明模块具有非常特定的任务并且仅执行该任务.


McK*_*eG1 23

与OO(包括这些)相关的软件设计概念的最佳综合讨论之一是Bertrand Meyer的面向对象软件构建.

关于"耦合",他给出了他的弱耦合/小接口规则如下:

如果两个模块通信,则应尽可能少地交换信息.

Meyer与凝聚力相关的材料并没有被归结为一个简洁的陈述,但我认为Steve McConnell的Code Complete中的这句话总结得很好:

内聚指的是一个类中的所有例程或例程中的所有代码都支持一个主要目的


Man*_*ood 22

耦合意味着依赖他人.
凝聚力意味着自身的完整性.