posts - 38, comments - 9, trackbacks - 0, articles - 1

再读《Ioc容器和Dependency Injection模式》

Posted on 2005-12-06 15:56 大阿福 阅读(999) 评论(0)  编辑  收藏 所属分类: Java
每次读《Ioc容器和Dependency  Injection模式》都会有新的体会,正好印证了“书读百遍,其义自现”这句古话。
就跟其他的设计模式乃至其他的软件开发技术一样,DIP也有自身适合的应用场景:如何在组装不同的软件组件时进行最大程度的解耦,达到更好的接口与实现的分离。这种不同的软件组件更侧重指在大型的软件系统中,由不同的人开发出来等待组合的情况。所以对于简单较小的桌面应用程序(仅仅是个人使用,或是没有灵活的架构需求),则是无需考虑过多的模式问题。
控制反转,我在最初接触到这个概念的时候一直没能明白,再读文章给了我进一步领会的机会。原来
在我们一般进行代码设计的时候,在某个对象依赖另一个时,一般会直接new一个出来,这本身就是一个强耦合的典型,在需要灵活的程序结构和运行时才决定实现类的需求下,这样的实现无疑增大了维护的难度和浪费。控制反转则是由第三方(Ioc容器)来提供被依赖对象,依赖者仅需提供所需接口及服务声明即可。
关于解耦,正如文中所提,ServiceLocator也是一种良好的模式,MF在文中对这两种模式做了较为详尽的比较,甚至更倾向于SL模式提供的更为直观的接口的方式,但是如果SL的设计本身也是个问题,设计的优劣,将影响解耦程度的高低,文中给出了为定位器提供分离的接口和动态服务定位器两种方案。
现在较为流行的Ioc容易有PicoContainer和Spring,尤其是后者,现在可以说是如日中天,可惜手头的工作一直未能采用这些先进的框架和容器技术,希望能在E5重构中实践。

只有注册用户登录后才能发表评论。


网站导航: