我试图将耦合和内聚的概念简化为一个简洁的定义。有人可以给我一个简短易懂的解释(比此处和此处的Wikipedia定义短)吗?他们如何互动?
谢谢。
有人有一个很好的简短例子吗?
Answers:
耦合
宽松:您和便利店的家伙。您通过定义明确的协议进行交流以实现各自的目标-您付钱,他让您带着Cheetos包出去走走。无需更换系统即可更换其中任何一个。
紧:你和你的妻子。
凝聚
低:便利店。您可以在那里找到从天然气到牛奶再到ATM银行业务的一切服务。产品和服务的共同点很少,将它们全部集中在一个地方的便利可能不足以抵消由此导致的成本增加和质量下降。
高:奶酪店。他们卖奶酪。没有其他的。不过,在奶酪方面无法战胜他们。
耦合意味着对他人的依赖。
凝聚力意味着自身的完整性。
Bertrand Meyer的“面向对象的软件构造”是与OO相关的软件设计概念的最佳综合讨论之一。
关于“耦合”,他给出了弱耦合/小接口规则,如下所示:
如果两个模块通信,则它们应交换尽可能少的信息。
迈耶关于凝聚力的材料从来没有被归结为一个简单的声明,但是我认为史蒂夫·麦康奈尔(Steve McConnell)的《密码大全》(Code Complete)中的这一句话可以很好地总结一下:
内聚性是指类中的所有例程或例程中的所有代码在多大程度上支持中心目的
“耦合是度量模块之间相互依存性的一种方法,应将其最小化。”“内聚性(要最大化的质量)着眼于每个模块执行的活动之间的关系。”
从本文引用:http : //steve.vinoski.net/pdf/IEEE-Old_Measures_for_New_Services.pdf
coupling
是间类,而cohesion
为中一个单独的类。