耦合是什么?
在编程里面 是指一个程序模块与其他模块的联系。如果存在联系,就叫做耦合,我们知道总会有必要的耦合,因此解耦是指把这些联系减少到必要的联系即可。所谓“高聚合,低耦合”就是指这个道理。
那这样有什么好处?
很明确的一点就是有利于代码的维护,通过减少代码的耦合性能让分工更明确,修改代码需要涉及的模块也减少。对于效率能有很大的提高。
来看一个例子:
你正乘坐直升机游览科罗拉多大峡谷,驾驶员——他显然犯了一个错误,在吃鱼,他的午餐——突然呻吟起来,晕了过去。幸运的是,他把你留在了离地面100英尺的地方。你推断,升降杆控制总升力,所以轻轻将其压低可以让直升机平缓降向地面。然而,cmdsg这样做时,却发现生活并非那么简单。直升机的鼻子向下,开始向左盘旋下降。突然间你发现,你驾驶的这个系统,所有的控制输入都有次级效应。压低左手的操作杆,你需要补偿性地向后移动右手柄,并踩右踏板。但这些改变中的每一项都会再次影响所有其他的控制。突然间,你在用一个让人难以置信的复杂系统玩杂耍,其中每一项改变都会影响所有其他的输入。你的工作负担异常巨大:你的手脚在不停地移动,试图平衡所有交互影响的力量。
——《程序员的修炼之道》
这比较形象地解释了耦合性过高的后果——牵一发而动全身。