什么是内聚和解耦?我找到了关于耦合的信息,但没有找到关于解耦的信息。
发布于 2010-05-21 19:35:51
Aaron的那篇文章对理解很有帮助,我也推荐你读一读manning的出版物Spring in Action的书,他们给出了很好的例子,说明了弹簧是如何解决这个问题的,它肯定会提高你对这个问题的理解。
编辑:
我在这本名为Growing object oriented software guided by tests的书中遇到了这一点:
耦合:
如果一个元素中的更改强制另一个元素中的更改,则
元素是耦合的。例如,如果两个类继承自一个共同的父类,那么其中一个类的更改可能需要更改另一个类。想一想组合音频系统:它是紧密耦合的,因为如果我们想要从模拟无线电转换到数字无线电,我们必须重建整个系统。如果我们从分离器中组装一个系统,它将具有低耦合性,我们可以简单地更换接收器。“松散”耦合的特性(即低耦合的特性)更容易维护。
内聚力:
An element的cohesion是衡量它的职责是否形成一个有意义的单元的指标。例如,同时解析日期和URL的类是不连贯的,因为它们是不相关的概念。想想一台同时洗衣服和洗盘子的机器--它不太可能同时洗好这两件事。2在另一个极端,一个只解析URL中标点符号的类不太可能是连贯的,因为它不代表一个完整的概念。要完成任何工作,程序员必须为协议、主机、资源等找到其他解析器。具有“高”一致性的特性更容易维护。
发布于 2010-05-21 19:43:41
Cohesion -与类/方法应该只负责一件事的原则相关,即没有不属于封装的零散方法;一个方法只做一件事。高/低内聚力是这种情况的程度。
耦合-系统的不同部分之间的相互依赖程度。例如,存在依赖关系的方式和位置。如果两个类相互调用对方的方法,那么它们是紧密耦合的,因为更改一个就意味着必须更改另一个。解耦是使紧密耦合的东西变得不那么紧密,或者根本不是这样的过程。
柔性系统具有高内聚性和松耦合性。
发布于 2010-05-21 19:32:51
对于耦合,this Wikipedia article应该回答您的所有问题。This article处理内聚力。
“解耦”只是“小耦合/低耦合”的另一种说法。
因此,这些术语回答了以下问题:
https://stackoverflow.com/questions/2881586
复制相似问题