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

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

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


当前回答

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

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

其他回答

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

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

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

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

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

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

简短明了的回答

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

在软件工程中,就像在现实生活中一样,内聚是指组成一个整体(在我们的例子中,让我们说一个类)的元素实际上属于一起的数量。因此,它是软件模块的源代码所表达的每个功能之间相关性的一种度量。

从OO的角度来看内聚的一种方法是类中的方法是否使用任何私有属性。

现在讨论的范围更大了,但高内聚(或内聚的最佳类型-功能内聚)是指模块的各个部分被分组,因为它们都有助于模块的一个定义良好的任务。

简单地说,耦合就是一个组件(再一次,想象一个类,尽管不一定)对另一个组件的内部工作方式或内部元素的了解程度,即它对另一个组件的了解程度。

松耦合是一种将系统或网络中的组件相互连接的方法,这样这些组件就可以在实际可能的最小程度上相互依赖。

我为此写了一篇博客。它详细地讨论了所有这些,并提供了示例等。它还解释了为什么应该遵循这些原则的好处。