插图版《IoC 容器和Dependency Injection 模式》

摘要

Martin Fowler的经典文章 + 透明的精彩翻译 + 1-2-3的UML插图(这个就不足挂齿了,呵呵)。

原文下载

《IoC 容器和Dependency Injection 模式》Martin Fowler 著,透明 译,PDF格式。
英文好的朋友也可以看原文 Inversion of Control Containers and the Dependency Injection pattern

UML插图

我为构造子注入、设置值注入、接口注入以及Service Locator分别绘制了UML图,本想直接插入到PDF文件中,但是觉得这样会影响原文质量,三思之后还是决定就把图贴在Blog里好了。

使用 PicoContainer 进行构造子注入(Page 5)
图中黄颜色的类是Fowler写的组件,他的朋友不能更改;绿颜色的类可由他的朋友新增/修改。
MovieLister和MovieFinder类层次构成了Strategy模式。MovieLister符合针对接口编程的设计原则。还有一个非常好的地方是Client类 MovieListerTester也不依赖于实现类(例如 ColonMovieFinder)。对实现类的依赖被封装在了一个函数configureContainer()中。


使用Spring 进行设值方法注入(Page 6)
图中黄颜色的类是Fowler写的组件,他的朋友不能更改;绿颜色的类可由他的朋友新增/修改。
MovieLister和MovieFinder类层次构成了Strategy模式。MovieLister符合针对接口编程的设计原则。还有一个非常好的地方是Client类 MovieListerTester也不依赖于实现类(例如 ColonMovieFinder)。对实现类的依赖被封装在了一个叫作“spring.xml”的文件中。


接口注入(Page 7)
图中黄颜色的类是Fowler写的组件,他的朋友不能更改;绿颜色的类可由他的朋友新增/修改。
MovieLister和MovieFinder类层次构成了Strategy模式。MovieLister符合针对接口编程的设计原则。
注意虽然在IfaceTester#configureLister()函数内创建了ColonMovieFinder的实例,但是由于只使用了它所实现的窄接口InjectFilename的injectFileName()函数,所以仍有使IfaceTester只依赖于InjectFilename接口的潜力。


使用Service Locator(Page 8)


时序图



工具箱

UML图使用 Visio 2003+ Pavel Hruby's UML2.0 模板绘制。文字部分使用 Google 拼音输入法键入。

转载于:https://www.cnblogs.com/1-2-3/archive/2007/10/22/UML-DependencyInjection.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值