为控制反转更名
作者:zfive5(zidong)
邮件:zfive5@yahoo.com.cn
控制反转的本质是为了解耦,让两个逻辑单元的依赖变得没有那么强,但做不到完全消除依赖,所以在有些书上又提到了依赖倒转,但对于第一次听到这样的名词还是丈二和尚摸不着头脑.其实也没有那么难,其实大道至简,就像两点之间确定一条直线那样朴实简明,
软件之所以引进这个模式那个原则,无非就是解决扩展和维护的问题,随着你我参与软件项目的时间增多,尤其是产品,一版版的增加无止境的需求,还得考虑人员的不断流动变化, 这种设计思想必然在设计之初,就必须遵守。
在解决软件的问题大部分的时候都是引入了中间层的方式来解决,在IT领域里把这种方式应用的淋漓精致一个是TCP/IP,另一个就是硬件设计中的接口标准.
l TCP/IP就像洋葱一样层层的把数据封装,下层并不知道上层的格式,只是知道就是一堆数据.其中每一层都是责任单一,物理层就是完成高低电平的,网络层就是组织IP数据的.这里有引出了“责任单一原则”.
l 另一个就是硬件之间的接口,例如:PCI和USB, 这个又和OO中接口比较像. 主机和MP3设备之间都是依赖USB,而不是主机今天实现和A型号的MP3连通,明天又和B型号的MP3连.
哈哈,说到这里,给它起一个名字, ----间接原则。
是否发现软件设计还比不上硬件设计方面有内涵,我个人感觉这跟软件犯错成本要比硬件或其他低.正如大家很少听到软件召回, 只是可能需要不停的打补丁.10年的从业经验告诉我实际上就是这样处理的, 前些日子暴风的召回又多半有炒作的嫌疑.说了这么多少,其实发现没有软件就是使用者和硬件之间的接口,
道生一,一生二,二生三,三生万物。
回到解决依赖问题,例如我A依赖B,通过分析我们引入C,当然肯定不是简单引入C,其实设计分析的灵魂就是提取一个稳定的C,这样A和B都会因为稳定C的引入,而解耦了,到这里是否感觉到依赖转移了.正如下图所表达的一样:
控制反转应该叫“依赖解耦”