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

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

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


当前回答

我的信念是:

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

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

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

截图来自Coursera。

其他回答

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

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

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

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

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

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

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

继承或泛化是高耦合(即高度相互依赖)的一个例子。我这么说的意思是,在继承中,父类通常定义了它的子类使用的基本功能,父类方法的更改直接影响它的子类。因此,我们可以说,阶级之间有更大程度的相互依赖。

实现或使用接口是一个高内聚(即低相互依赖)的例子。这意味着接口为实现它的任何类提出了契约,但每个类都有权以自己的方式实现接口中声明的方法,并且一个类中声明的方法的更改不会影响任何其他类。

我想你们已经有了很多定义,但如果你们仍然有疑问,或者如果你们是编程新手,想深入了解这个问题,那么我建议你们看这个视频, https://youtu.be/HpJTGW9AwX0 这只是一个参考,以获得更多关于多态性的信息… 希望你能更好地理解这一点

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