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

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

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


当前回答

我的信念是:

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

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

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

截图来自Coursera。

其他回答

举个例子可能会有所帮助。想象一个生成数据并将其放入数据存储的系统,数据存储可以是磁盘上的文件,也可以是数据库。

高内聚可以通过将数据存储代码与数据生产代码分开来实现。(实际上是将磁盘存储与数据库存储分开)。

低耦合可以通过确保数据生产对数据存储没有任何不必要的了解来实现(例如,不会询问数据存储关于文件名或db连接的信息)。

打个比方,如果你的猫叫,它的凝聚力很差,如果你的狗需要一只猫在他身边叫,这是高度耦合的。

狗会叫,猫会呼噜,如果它们吐了,你的拉请求会被拒绝。

当我读到微服务的时候。我发现了以下几点:

内聚性是对组件各部分之间的关系数量的度量。高内聚性意味着交付组件功能所需的所有部分都包含在组件中

耦合是系统中一个组件与其他组件之间关系数量的度量。低耦合意味着组件与其他组件之间没有太多关系

在软件设计中,高内聚性意味着类应该做一件事,并且把一件事做得很好。高凝聚力与单一责任原则密切相关。

低耦合意味着类应该具有最少的依赖关系。而且,必须存在的依赖关系应该是弱依赖关系——喜欢对接口的依赖而不是对具体类的依赖,或者喜欢组合而不是继承。

高内聚和低耦合使我们能够更好地设计代码,从而更容易维护。

我的信念是:

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

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

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

截图来自Coursera。