耦合和凝聚力

时间:2008-09-02 16:24:57

标签: oop architecture theory ooad

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

感谢。

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

6 个答案:

答案 0 :(得分:200)

<强>联轴器

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

  • 紧:你和你的妻子。

<强>衔接

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

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

答案 1 :(得分:64)

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

内聚 - 衡量模块中成员(方法中的类,方法,功能)与同一模块的其他成员之间的密切关系。希望增加内聚力,因为这表明模块具有非常特定的任务并且仅执行该任务。

答案 2 :(得分:22)

与OO(包括这些)相关的软件设计概念的最佳综合讨论之一是Bertrand Meyer的Object Oriented Software Construction

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

  
    

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

  

迈耶与凝聚力相关的材料并没有被归结为一个简洁的陈述,但我认为史蒂夫麦康奈尔的Code Complete这句话总结得很好:

  
    

凝聚力指的是一个类中的所有例程或例程中的所有代码都支持一个中心目的

  

答案 3 :(得分:22)

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

答案 4 :(得分:3)

衡量耦合的快速方法是衡量import(或类似)陈述。

答案 5 :(得分:1)

“耦合是衡量模块之间相互依赖关系的指标, 哪个应该最小化“ “凝聚力,一种最大化的品质,专注于关系 在每个模块执行的活动之间。“

引用本文:http://steve.vinoski.net/pdf/IEEE-Old_Measures_for_New_Services.pdf