官方:
高内聚:“相关度”比较高的尽可能集中不分散
低耦合:两个相关的模块尽可能把依赖度降低,不要让两个系统产生“强依赖”
他俩的关系:正常来讲高内聚会导致高耦合,低内聚会导致低耦合。
1.一个类里写很多方法为啥不是高内聚?
首先要懂,高内聚指的是“”相关度“”比较高的尽可能集中,是相关度高的。有的人看见一个类里面写了很多很多方法就觉得是高内聚了,错了兄弟,人家的说的是相关度,你一个类里写了吃饭的方法+如厕的方法+学习的方法+运动的方法+........吃饭运动如厕学习有啥相关的?吃饭能≈如厕?运动能≈学习?还是如厕能≈运动?所以这几个方法之间的“相关度”很低,相关度低也就是内聚低。
2.为啥高耦合一般高内聚,低耦合一般低内聚?
一个类里只写一个学习方法,这是高内聚(学习相关度100%=学习)低耦合(没有其他的类)。但是!但是!你只学习不吃饭?不上厕所?不睡觉?
情况一:学习完,你需要吃饭上厕所睡觉了,所以借助其他方法,睡觉方法,吃饭方法,睡觉方法。这就导致了一个类中N多方法,这就是低内聚(虽然有很多方法但方法间没啥关系)低耦合(就一个类所以跟其他类没关联,所以低耦合)这就出现了2低
情况二:我只在本类学习,吃饭上厕所找其他类干。那就是高内聚(因为一个类一个方法相关度的浓度100%所以高内聚)高耦合(我吃饭必须找有吃饭函数的类,没那个类我不能吃饭活不了,我特别特别依赖别的类,依赖强度100%)这就出现了2低
3.那为咋样才能最好呢?
高内聚低耦合是最好的。但是需要很长的经验和思考,新手一上来很难做到高内聚低耦合的,要么2高,要么2低。so---------努力学习积攒经验吧。