在一次技术采访中,我被问及项目的凝聚力和耦合性。我详细解释了它们的定义,尽管我没有像他说的那样正确回答问题的第二部分。
“我们如何在一个项目中同时实现高度内聚和松散耦合的设计,请解释这种方法应该如何在一个整体项目中实现?”
我回答说这两个目标是矛盾的,所以我们需要找出每个项目或模块的最佳选择,但我无法提供全面的答案。
如果有人能帮我,我将不胜感激。
在阅读你的问题之前,我不熟悉衔接的概念。来自维基百科(此处):
具有高内聚性的模块往往更可取,因为高内聚性与软件的几个理想特性有关,包括健壮性、可靠性、可重用性和可理解性。相比之下,低内聚性与不受欢迎的特征有关,例如难以维护、测试、重用甚至理解。
衔接通常与耦合形成对比,这是一个不同的概念。高内聚力通常与松耦合相关,反之亦然。
我认为您希望每个模块内部具有高内聚性,并且它们之间具有松散耦合,这可以通过让模块只通过简单的抽象接口进行通信来实现。要定义这些接口,您需要设计一个清晰的关注点分离,所有紧密耦合的任务都在同一个类中完成,而具有不同粒度(例如,高级算法和低级实现细节)的任务被分离出来,并由接口抽象出来。
根据维基百科(https://en.wikipedia.org/wiki/Cohesion_(计算机科学)
高内聚力通常与松耦合相关,反之亦然
因此,目标是实现高内聚和松耦合。为了实现这一点,您需要开发只做一件事的类,将整体项目分成几个模块(DAO、UI、业务逻辑),并编程到一个接口,这样其他类(或其他模块)就不知道任何关于其他类/模块内部的事,只知道外部契约(接口/API)。
首先,我想说,这与你所说的“这两个定义是矛盾的”完全相反。我将引用约翰·萨特辛格在《变化世界中的系统分析和设计,关键事实》一书中的话来描述
低耦合通常与高内聚相关,反之亦然
通过在Monolithic中说,他们是在向您发出信号,询问SOLID原理,如果您应用它们,将导致高内聚力和松散耦合项目。
以下是定义:
定义:一个类改变的原因不应该超过一个。
好处:
定义:软件实体(类、模块、函数等)应该开放扩展,但关闭修改。
好处:
定义:程序中的对象应该可以用其子类型的实例替换,而不改变程序的正确性。
好处:
定义:许多特定于客户端的接口比一个通用接口更好
好处:
定义:高级模块不应该依赖于低级模块,而是两者都应该依赖于抽象。抽象不应该依赖于细节;而细节应该取决于抽象。
好处:
更多信息
书籍
假设方法和的责任密切相关 第一个例子: 如果 •和在class中定义(因此class具有高度的内聚性) •类别使用和类别使用 然后 •与和类耦合 •更改的签名只需要更改,而不需要更改 第二个例子: 如果 •在类中定义(因此与耦合) •用类定义(因此与耦合) 然后 •更改的签名只需要更改,而不需要更改 a) 据我所知,上一个例子中的类与第一个例子中的类并不耦合!还是我错过了什么? b) 据我所知,第
本文向大家介绍什么是耦合和凝聚力?相关面试题,主要包含被问及什么是耦合和凝聚力?时的应答技巧和注意事项,需要的朋友参考一下 组件之间依赖关系强度的度量被认为是耦合。一个好的设计总是被认为具有高内聚力和低耦合性。 面试官经常会问起凝聚力。它也是另一个测量单位。更像是一个模块内部的元素保持结合的程度。 必须记住,设计微服务的一个重要关键是低耦合和高内聚的组合。当低耦合时,服务对其他服务的依赖很少。这样
有人能帮我吗,我读了一些Java紧耦合和松耦合的文章。我看了好几段YouTube视频和文章,对松散耦合有一定的怀疑,但仍然无法理解某些要点。我会解释我所理解的和让我困惑的。 在松散耦合中,我们限制类之间的直接耦合。但在紧密耦合中,我们注定要去上课。让我们举个例子。我有一个主类和另一个名为Apple的不同类。我在Main类中创建了这个类的一个实例 让我们看看松耦合 如果我将松散耦合中的方法签名从“喝
我在理解语句。我已经在谷歌上搜索并阅读了很多关于这方面的内容,但仍然觉得很难理解。 据我所知,高内聚意味着我们应该有专门的类来执行特定的功能。希望这是正确的?就像信用卡验证类一样,它专门用于验证信用卡。 还不明白低耦合是什么意思?
我应该写两个版本的相同代码。一个具有低耦合和高内聚,另一个仍然具有低耦合,但这次具有低内聚。我真的不明白有什么区别?我怎么可能有低耦合和低内聚?它们似乎如此相关,以至于这是不可能做到的。 有人能解释一下吗?也许用一个例子?谢谢。
目前,我将进一步介绍java类,这是该类如何简要定义的: 内聚:以高内聚为目标,在这种情况下,内聚意味着单个模块紧紧关注其任务。 耦合:以低耦合为目标,在这种情况下,耦合意味着两个或多个模块相互交织的程度。 如何确定凝聚力和耦合度的水平? 例如,我的一些方法调用了同一类中的其他方法。这意味着调用其他方法的方法依赖于其他方法,以便“调用”方法完成其代码块。这是否意味着我对同一类的方法具有低内聚和高耦