首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内聚和解耦,它们代表了什么?

内聚和解耦,它们代表了什么?
EN

Stack Overflow用户
提问于 2010-05-21 19:26:05
回答 5查看 47.7K关注 0票数 35

什么是内聚和解耦?我找到了关于耦合的信息,但没有找到关于解耦的信息。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-05-21 19:35:51

Aaron的那篇文章对理解很有帮助,我也推荐你读一读manning的出版物Spring in Action的书,他们给出了很好的例子,说明了弹簧是如何解决这个问题的,它肯定会提高你对这个问题的理解。

编辑:

我在这本名为Growing object oriented software guided by tests的书中遇到了这一点:

耦合:

如果一个元素中的更改强制另一个元素中的更改,则

元素是耦合的。例如,如果两个类继承自一个共同的父类,那么其中一个类的更改可能需要更改另一个类。想一想组合音频系统:它是紧密耦合的,因为如果我们想要从模拟无线电转换到数字无线电,我们必须重建整个系统。如果我们从分离器中组装一个系统,它将具有低耦合性,我们可以简单地更换接收器。“松散”耦合的特性(即低耦合的特性)更容易维护。

内聚力:

An element的cohesion是衡量它的职责是否形成一个有意义的单元的指标。例如,同时解析日期和URL的类是不连贯的,因为它们是不相关的概念。想想一台同时洗衣服和洗盘子的机器--它不太可能同时洗好这两件事。2在另一个极端,一个只解析URL中标点符号的类不太可能是连贯的,因为它不代表一个完整的概念。要完成任何工作,程序员必须为协议、主机、资源等找到其他解析器。具有“高”一致性的特性更容易维护。

票数 76
EN

Stack Overflow用户

发布于 2010-05-21 19:43:41

Cohesion -与类/方法应该只负责一件事的原则相关,即没有不属于封装的零散方法;一个方法只做一件事。高/低内聚力是这种情况的程度。

耦合-系统的不同部分之间的相互依赖程度。例如,存在依赖关系的方式和位置。如果两个类相互调用对方的方法,那么它们是紧密耦合的,因为更改一个就意味着必须更改另一个。解耦是使紧密耦合的东西变得不那么紧密,或者根本不是这样的过程。

柔性系统具有高内聚性和松耦合性。

票数 16
EN

Stack Overflow用户

发布于 2010-05-21 19:32:51

对于耦合,this Wikipedia article应该回答您的所有问题。This article处理内聚力。

“解耦”只是“小耦合/低耦合”的另一种说法。

因此,这些术语回答了以下问题:

  • 项目的每个部分在多大程度上依赖于另一个部分?
  • 如果您只想使用项目的一部分(如解决特定问题),您需要了解项目的其余部分多少?
  • 是项目的每个部分都专注于特定问题的单个解决方案,还是解决方案“泄漏”到其他部分?
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2881586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档