对依赖注入技术的初学指导
2008-09-20 13:26:20 来源:WEB开发网举例来说,J2EE中使用了JNDI来标准化找寻对象引用的机制。这样的实施在一些简单的,没有JNDI的环境中就会迫使客户端的代码作出调整。
DI的使用要求我们在写软件时,把依赖性搞清楚,让DI框架里的容器替我们去做那些将服务端部件实例化、初始化、次序化、然后提供用户端需要的服务端的引用的复杂工作。
DI框架举例
现在有不少对开发人员有帮助的框架。我发现确实有用的有:
Spring框架:一个相当大的框架,提供包括DI在内的很多功能
Pico框架:一个很小,但是集中于DI容器的框架
HiveMind:另一个DI容器的框架
XWork:一个非常有效地利用DI的,主要基于命令模式的框架。虽然它是独立存在的,但它通常和Webwork结合起来用
在下面的章节里,我们将取一种情境,先不用DI来实施一次,再用上述提到的每一种DI框架来实施。这样,我们就能体会到如何使用这些框架。这里,我尽量少用代码,而且这些代码的主要重心也在DI相关的功能上。
实施情境
随附的源代码基本上实施了我之前提到的那个旅行订票情境。总的流程图(从每一个"*Harness"类里的主方法开始)如下:
Harness类被实例化,其中的runHarness()方法被调用。
runHarness()方法(在AbstractHarness类中)首先激活configure()方法。configure()方法再来对DI容器进行初始化,并注册它的实施类。
runHarness()方法随后激活getPlanner()方法。这通常会激活DI框架底层的Lookup方法。目前暂不明瞭的是,这个Lookup方法是否会引发DI容器对AirlineAgency,CabAgency,和TripPlanner等接口的实施类的实例化,并解决好它们之间的相互依赖关系。
runHarness()方法随后在调用planTrip()方法来实际完成订票和计划taxi接人的时间问题。
更多精彩
赞助商链接