读[向依赖关系宣战]有感
2006-11-16 11:59
309 查看
反复读了几遍王咏武的《向依赖关系宣战——依赖倒置、控制反转和依赖注入辨析》
再次感受到自己要学的东西真的很多,废话不多说。下面阐述几个实例:
1
比如a框架要使用b框架,为了隔离这两个框架,就要在中间引入一个mid框架。
为了防止a框架过分依赖于mid框架,就需要a框架总结出要用到的接口,而由mid框架实现
2
不要让下层框架依赖于上层框架。
比如a框架中调用b框架的func1,然后b框架的func1调用a框架的func2,这样b框架就对a框架产生了依赖。应该在调用func1的时候传入一个函数指针p,然后func1调用这个p。
又比如a框架中调用b框架的func1格式化一个string再返回一个string,而如果在func1中指定b框架的某个
formatter,func1就和具体的formatter产生了依赖,应该在调用的时候给func1传入一个formatter,而func1根据这
个传入的formatter格式化string返回。
这些比方好像不容易看懂,反正自己写着玩,自己看,嘻嘻
平时自己有时候也会无意识地解这些不必要的耦合,有时候又没有,以后写程序的时候真应该在任何时候想一想程序之间的耦合关系
有时候,选择一个合适的IoC框架,如.net下的Windsor,JAVA下的Spring,PicoContainer可以让程序之间的耦合更少。
关于Martin Fowler的《Dependency Injection》中讲的Service Locator,我还没有看懂。。。
再次感受到自己要学的东西真的很多,废话不多说。下面阐述几个实例:
1
比如a框架要使用b框架,为了隔离这两个框架,就要在中间引入一个mid框架。
为了防止a框架过分依赖于mid框架,就需要a框架总结出要用到的接口,而由mid框架实现
2
不要让下层框架依赖于上层框架。
比如a框架中调用b框架的func1,然后b框架的func1调用a框架的func2,这样b框架就对a框架产生了依赖。应该在调用func1的时候传入一个函数指针p,然后func1调用这个p。
又比如a框架中调用b框架的func1格式化一个string再返回一个string,而如果在func1中指定b框架的某个
formatter,func1就和具体的formatter产生了依赖,应该在调用的时候给func1传入一个formatter,而func1根据这
个传入的formatter格式化string返回。
这些比方好像不容易看懂,反正自己写着玩,自己看,嘻嘻
平时自己有时候也会无意识地解这些不必要的耦合,有时候又没有,以后写程序的时候真应该在任何时候想一想程序之间的耦合关系
有时候,选择一个合适的IoC框架,如.net下的Windsor,JAVA下的Spring,PicoContainer可以让程序之间的耦合更少。
关于Martin Fowler的《Dependency Injection》中讲的Service Locator,我还没有看懂。。。
相关文章推荐
- 向依赖关系宣战--依赖倒置、控制反转和依赖注入辨析
- 向依赖关系宣战依赖倒置、控制反转和依赖注入辨析
- 向依赖关系宣战——依赖倒置、控制反转和依赖注入辨析[转载]
- [转]向依赖关系宣战——依赖倒置、控制反转和依赖注入辨析
- 向依赖关系宣战(转)
- 向依赖关系宣战——依赖倒置、控制反转和依赖注入辨析
- 向依赖关系宣战------------------------------------------------依赖倒置、控制反转和依赖注入辨析
- 向依赖关系宣战[转]
- 向依赖关系宣战
- 向依赖关系宣战
- dpkg: 依赖关系问题使得 wps-office 的配置工作不能继续: wps-office 依赖于 libpng12-0;然而: 未安装软件包 libpng12-0。
- 几种类间关系:继承、实现、依赖、关联、聚合、组合及UML实现图
- UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
- 【Unity】AssetBundle和AssetBundle Manager的使用和介绍(流程和依赖关系)
- 关联、组合、聚合、依赖关系比较
- USB的描述符及各种描述符之间的依赖关系
- maven依赖关系中Scope的作用
- Android的OpenGL ES库之间的依赖关系
- 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
- Spring 3.x jar 包详解与依赖关系(转)