在理解解耦之前,我们先来理解耦合度。耦合度是软件工程领域的概念,是指模块之间的依赖程度。
这里的模块可以小到一个小功能,也可以大到一个系统。
那么对应的,解耦就是解除模块之间的耦合关系。
降低模块之间的依赖程度也可以理解为解耦,模块之间有依赖关系就必然存在耦合,
0耦合是基本无可能的,那是最理想的状态。
耦合度越低,模块之间依赖的程度越低,模块的独立性、复用性和可移植性就越强。
那么如何判断2个有关联的模块的耦合程度呢?
1)是否有牵一发而动全身的现象?
一个小的改动,会影响到依赖它的所有模块,这是耦合度高的典型表现。
比如A模块和B模块都依赖于C模块,当A模块有特殊需求,要求C模块支持时,C模块没法改造,C模块一改造会影响到接入它的所有模块。
2)看模块的复用性
可复用性越高,说明耦合度越低
3)看模块的可移植性
可移植性越高,说明耦合度越低
举个例子:比如公司有一个电商A产品,它里面有搜索推荐功能,但是搜索推荐功能是强耦合在电商产品里面的,即搜索推荐和它的基础功能代码逻辑强耦合。
如果这时公司又推出一个新的电商B产品,也需要一样的搜索推荐功能,因为之前A产品把搜索推荐功能和它本身的基础功能强耦合在一起了,搜索推荐功能就很难去复用了。
如果把A产品的基础功能和搜索推荐功能解耦,各司其职,分开2个独立的模块,以后任何产品想接入搜索推荐功能的话,按照接入标准接入即可。
小结:如果很难降低2个模块的耦合度,那么可能是模块之间职责分工不合理、调用方式有问题、或者设计模式不合理等等。
--- end ----