我理解这种低耦合高内聚的说法有问题。我在谷歌上搜索并阅读了很多这方面的内容,但还是觉得很难理解。

我的理解是,高内聚意味着,我们应该有专门执行特定功能的类。希望这是正确的?比如信用卡验证类,它专门用于验证信用卡。

还是不明白低耦合是什么意思?


当前回答

低耦合和高内聚是一个值得推荐的现象。

耦合意味着各个模块相互依赖的程度,以及其他模块在改变模块的某些/相当大的功能时是如何受到影响的。低耦合被强调,因为依赖关系必须保持在较低的水平,以便对其他模块进行非常少的/可以忽略不计的更改。

其他回答

低耦合:—— 让它变得简单。 如果你改变了你的模块,它对其他模块有什么影响?

例子:- 如果您的服务API公开为JAR,对方法签名的任何更改都将破坏调用API(高/紧耦合)。

如果您的模块和其他模块通过异步消息通信。只要您获得消息,您的方法更改签名将是您模块的本地(低耦合)。

如果消息格式发生变化,则呼叫客户端将需要进行一些更改。

内聚性-所有事物之间的紧密联系。 耦合-所有事物如何相互连接。

让我们举个例子——我们想设计一辆自动驾驶汽车。

我们需要马达正常运转。

我们需要这辆车能自动行驶。

(1)中的所有类和函数都能很好地一起启动电机并使其运行,但不能帮助汽车转向。所以我们把这些类放在引擎控制器后面。

(2)中的所有类和函数都能很好地使汽车转向、加速和制动。它们不能帮助汽车启动或将汽油输送到活塞。所以我们把这些类放在它自己的驱动控制器后面。

这些控制器用于与所有可用的类和函数通信。控制器之间只进行通信。这意味着我不能从油门踏板类中调用活塞类中的函数来使汽车走得更快。

踏板类必须要求驱动控制器与引擎控制器对话,然后引擎控制器告诉活塞类加快速度。这使得我们程序员能够发现问题,并允许我们毫无顾虑地组合大型程序。这是因为代码都是在控制器后面工作的。

长话短说,我所理解的低耦合意味着可以在不影响系统正常功能的情况下交换组件。基本上,将您的系统模块化为可单独更新的功能组件,而不会破坏系统

简短明了的回答

高内聚性:一个类/模块中的元素应该在功能上属于一起,并做一件特定的事情。 松耦合:不同的类/模块之间应该有最小的依赖关系。

我的信念是:

内聚性是指一个模块/类的元素属于在一起的程度,建议相关的代码应该相互接近,因此我们应该争取高内聚性,并将所有相关的代码尽可能紧密地绑定在一起。它与模块/类中的元素有关。

耦合是指不同模块/类之间相互依赖的程度,建议所有模块尽可能独立,这就是低耦合的原因。它与不同模块/类之间的元素有关。

将整个画面形象化是有帮助的:

截图来自Coursera。