低耦合思想的理解

Spring的IOC思想是将对象的控制权交由Spring管理,交给Spring管理后,他是通过配置文件中的参数一反射的方式来创建的。这个对象并非是一个代理对象,并没有增加新的功能,那为什么要弄的这么花哨呢?就是因为它能降低代码之间的耦合程度,低耦合一直是衡量程序是否优秀的一大标准,那么为什么程序员们都这么强调低耦合呢?

首先我们都因该知道,技术与需求是同步发展的,多数程序都会更新迭代。举一个简单的例子。淘宝在2003年上线,当时的只有一台服务器,架构也比较简单:LAMP(Linux+Apache+MySQL+PHP),数据库有三个,其结构是这样的:

低耦合思想的理解

这对当时的需求来说是完全满足的。但是上线后,用户数量急剧增长,到2004年年底,淘宝网已有四百多万中商品了,日均四千多万PV注册会员带到400万个, 之前的架构肯定是不够用了,于是就需要技术的升级。将数据库换成Oracle的,服务器也增加,引入缓存及Spring、ibatis等框架,其其结构如下:

低耦合思想的理解

当然,淘宝的技术与需求也仍在发展。在程序的每一次更新,都需要做大量的编程工作,如果程序的耦合性过高,那将曾加许多不必要的成本。

一个程序、项目,就像一辆汽车、移动房子一样:一辆汽车,若所有的部件都焊死了,那么当某个零件损坏或要更新时,就必须重新换一辆车;一栋房子,有承重墙和非承重墙,要想让房子更新换代,只要承重墙不动,其他地方任你拆砌。车子是因为零件的耦合太高,房子是因为非承重墙的耦合性低。我们降低耦合,就是是程序的更新换代在满足需求的情况下尽可能的做更少的改变。

说道这里,也能理解IOC的巧妙之处了,原始的new对象的方式就像是将汽车的零件焊死在了代码里,一改就乣改很多。而Spring以配置文件通过反射创建对象,以后需求如果改变,只要编写好新的类,在稍加修改配置文件即可,就如同给汽车按上新零件,只需做好新零件再接一接螺丝这么简单。