我理解这种低耦合高内聚的说法有问题。我在谷歌上搜索并阅读了很多这方面的内容,但还是觉得很难理解。
我的理解是,高内聚意味着,我们应该有专门执行特定功能的类。希望这是正确的?比如信用卡验证类,它专门用于验证信用卡。
还是不明白低耦合是什么意思?
我理解这种低耦合高内聚的说法有问题。我在谷歌上搜索并阅读了很多这方面的内容,但还是觉得很难理解。
我的理解是,高内聚意味着,我们应该有专门执行特定功能的类。希望这是正确的?比如信用卡验证类,它专门用于验证信用卡。
还是不明白低耦合是什么意思?
当前回答
低耦合是在两个或多个模块的上下文中。如果一个模块中的变化导致其他模块中的许多变化,那么它们被称为高度耦合的。这就是基于接口的编程的用处。模块内的任何变化都不会影响其他模块,因为它们之间的接口(交互的平均值)没有改变。
高内聚性——把相似的东西放在一起。所以一个类应该有方法或行为来做相关的工作。举一个夸张的坏例子:List接口的实现不应该有与String相关的操作。String类应该有方法和与String相关的字段,类似地,List的实现应该有相应的东西。
希望这能有所帮助。
其他回答
我想你们已经有了很多定义,但如果你们仍然有疑问,或者如果你们是编程新手,想深入了解这个问题,那么我建议你们看这个视频, https://youtu.be/HpJTGW9AwX0 这只是一个参考,以获得更多关于多态性的信息… 希望你能更好地理解这一点
继承或泛化是高耦合(即高度相互依赖)的一个例子。我这么说的意思是,在继承中,父类通常定义了它的子类使用的基本功能,父类方法的更改直接影响它的子类。因此,我们可以说,阶级之间有更大程度的相互依赖。
实现或使用接口是一个高内聚(即低相互依赖)的例子。这意味着接口为实现它的任何类提出了契约,但每个类都有权以自己的方式实现接口中声明的方法,并且一个类中声明的方法的更改不会影响任何其他类。
举个例子可能会有所帮助。想象一个生成数据并将其放入数据存储的系统,数据存储可以是磁盘上的文件,也可以是数据库。
高内聚可以通过将数据存储代码与数据生产代码分开来实现。(实际上是将磁盘存储与数据库存储分开)。
低耦合可以通过确保数据生产对数据存储没有任何不必要的了解来实现(例如,不会询问数据存储关于文件名或db连接的信息)。
当我读到微服务的时候。我发现了以下几点:
内聚性是对组件各部分之间的关系数量的度量。高内聚性意味着交付组件功能所需的所有部分都包含在组件中
耦合是系统中一个组件与其他组件之间关系数量的度量。低耦合意味着组件与其他组件之间没有太多关系
简短明了的回答
高内聚性:一个类/模块中的元素应该在功能上属于一起,并做一件特定的事情。 松耦合:不同的类/模块之间应该有最小的依赖关系。