凝聚力和解耦

dbt*_*tek 34 oop coupling cohesion decoupling

谁能告诉我什么是凝聚力和解耦?我找到了耦合,但在任何地方都没有去耦.我需要了解它们的含义.

任何帮助将不胜感激.感谢回复.

ant*_*ant 72

来自Aaron的那篇文章非常有助于理解,我也建议你阅读Manning出版物Spring in Action一书,他们就弹簧如何解决这个问题提供了非常好的例子,它肯定会提高你对此的理解.

编辑:

我在这本名为"面向对象的软件"这本由测试指导的书中出现了这个问题:

耦合:

如果一个中的变化迫使另一个中的变化,则耦合元素.例如,如果两个类继承自公共父级,则一个类中的更改可能需要更改另一个类.想想一个组合音频系统:它紧密耦合,因为如果我们想要从模拟无线电转换到数字无线电,我们必须重建整个系统.如果我们从separates组装一个系统,它将具有低耦合,我们可以换掉接收器."松散"耦合的特征(即,具有低耦合的特征)更易于维护.

凝聚:

元素的凝聚力衡量其责任是否构成一个有意义的单位.例如,解析日期和URL的类不一致,因为它们是不相关的概念.想想一台洗衣服和餐具的机器 - 它不太可能做得很好.2另一方面,只解析URL中标点符号的类不太可能是连贯的,因为它不代表一个完整的概念.要完成任何工作,程序员必须找到协议,主机,资源等的其他解析器.具有"高"一致性的特征更易于维护.


Rob*_*ert 13

内聚 - 与一个类/方法应该只对一件事负责的原则有关,即没有不属于封装的杂散方法; 一种方法只做一件事.高/低凝聚力是指其持有的程度.

耦合 - 系统的不同部分是如何相互依赖的.例如,如何以及在哪里存在依赖关系.如果两个类调用彼此的方法,则它们紧密耦合,因为改变一个意味着必须改变另一个.解耦是制造紧密耦合的东西的过程,或者根本不紧密.

灵活的系统具有高内聚力和松散耦合.