我在理解语句时遇到了一些问题,耦合度低,内聚度高
。我已经在谷歌上搜索并阅读了很多关于这方面的内容,但仍然觉得很难理解。
据我所知,高内聚意味着我们应该有专门的类来执行特定的功能。希望这是正确的?就像信用卡验证类一样,它专门用于验证信用卡。
还不明白低耦合是什么意思?
在软件设计中,高内聚性意味着类应该做好一件事。高凝聚力与单一责任原则密切相关。
低耦合表明类应该有尽可能少的依赖。此外,必须存在的依赖应该是弱依赖——更喜欢对接口的依赖而不是对具体类的依赖,或者更喜欢组合而不是继承。
高内聚性和低耦合性为我们提供了更易于维护的设计更好的代码。
软件工程中的内聚性,就像在现实生活中一样,是指组成一个整体(在我们的例子中,让我们假设一个类)的元素在多大程度上可以说它们实际上属于一起。因此,它是衡量软件模块的源代码所表达的每一项功能的相关性有多强的指标。
从OO的角度来看内聚的一种方法是,类中的方法是否使用了任何私有属性。
现在讨论的比这更大,但是高内聚(或者内聚的最佳类型——功能内聚)是指模块的各个部分被分组,因为它们都有助于模块的一个明确定义的任务。
简单地说,耦合就是一个组件(同样,想象一个类,尽管不一定)知道另一个组件的内部工作或内部元素的多少,即它对另一个组件有多少知识。
松耦合是一种将系统或网络中的组件互连的方法,使这些组件相互依赖的程度尽可能低…
我写了一篇关于这一点的博客文章。它详细讨论了这一切,并附有例子等。它还解释了为什么你应该遵循这些原则的好处。
我相信:
内聚力是指一个模块/类的元素归属在一起的程度,建议相关的代码应该彼此靠近,所以我们应该争取高内聚力,尽可能地将所有相关的代码绑定在一起。它与模块/类内的元素有关。
耦合是指不同模块/类之间相互依赖的程度,建议所有模块应尽可能独立,这就是低耦合的原因。它与不同模块/类之间的元素有关。
可视化整个画面将是有帮助的:
截图取自Coursera。
我应该写两个版本的相同代码。一个具有低耦合和高内聚,另一个仍然具有低耦合,但这次具有低内聚。我真的不明白有什么区别?我怎么可能有低耦合和低内聚?它们似乎如此相关,以至于这是不可能做到的。 有人能解释一下吗?也许用一个例子?谢谢。
本文向大家介绍什么是耦合和凝聚力?相关面试题,主要包含被问及什么是耦合和凝聚力?时的应答技巧和注意事项,需要的朋友参考一下 组件之间依赖关系强度的度量被认为是耦合。一个好的设计总是被认为具有高内聚力和低耦合性。 面试官经常会问起凝聚力。它也是另一个测量单位。更像是一个模块内部的元素保持结合的程度。 必须记住,设计微服务的一个重要关键是低耦合和高内聚的组合。当低耦合时,服务对其他服务的依赖很少。这样
我最近参加了一次设计原理考试 据我所知,内聚性是指一个类/模块如何专注于解决它创建时要解决的问题,或者更好地说,它在完成it工作方面有多出色。它做了不该做的工作吗?然后将该部分移动到另一个类/模块。 耦合是许多类/模块之间的依赖程度。这意味着,无论我们是否对不同的模块/类进行重大更改,一个好的类/模块都会起作用。 我曾经这样向自己解释:调酒师的工作是煮咖啡和其他饮料。一个好的调酒师应该做好自己的工
本文向大家介绍什么是耦合?相关面试题,主要包含被问及什么是耦合?时的应答技巧和注意事项,需要的朋友参考一下 组件之间依赖关系强度的度量被称为耦合。好的设计总是高内聚和低耦合的。
在一次技术采访中,我被问及项目的凝聚力和耦合性。我详细解释了它们的定义,尽管我没有像他说的那样正确回答问题的第二部分。 “我们如何在一个项目中同时实现高度内聚和松散耦合的设计,请解释这种方法应该如何在一个整体项目中实现?” 我回答说这两个目标是矛盾的,所以我们需要找出每个项目或模块的最佳选择,但我无法提供全面的答案。 如果有人能帮我,我将不胜感激。
假设方法和的责任密切相关 第一个例子: 如果 •和在class中定义(因此class具有高度的内聚性) •类别使用和类别使用 然后 •与和类耦合 •更改的签名只需要更改,而不需要更改 第二个例子: 如果 •在类中定义(因此与耦合) •用类定义(因此与耦合) 然后 •更改的签名只需要更改,而不需要更改 a) 据我所知,上一个例子中的类与第一个例子中的类并不耦合!还是我错过了什么? b) 据我所知,第