﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-IDEAL Garden-随笔分类-Java</title><link>http://www.blogjava.net/toafu/category/5675.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:33:38 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:33:38 GMT</pubDate><ttl>60</ttl><item><title>再读《Ioc容器和Dependency Injection模式》</title><link>http://www.blogjava.net/toafu/archive/2005/12/06/22732.html</link><dc:creator>大阿福</dc:creator><author>大阿福</author><pubDate>Tue, 06 Dec 2005 07:56:00 GMT</pubDate><guid>http://www.blogjava.net/toafu/archive/2005/12/06/22732.html</guid><wfw:comment>http://www.blogjava.net/toafu/comments/22732.html</wfw:comment><comments>http://www.blogjava.net/toafu/archive/2005/12/06/22732.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toafu/comments/commentRss/22732.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toafu/services/trackbacks/22732.html</trackback:ping><description><![CDATA[<DIV>每次读《Ioc容器和Dependency &nbsp;Injection模式》都会有新的体会，正好印证了“书读百遍，其义自现”这句古话。</DIV>
<DIV></DIV>
<DIV>就跟其他的设计模式乃至其他的软件开发技术一样，DIP也有自身适合的应用场景：如何在组装不同的软件组件时进行最大程度的解耦，达到更好的接口与实现的分离。这种不同的软件组件更侧重指在大型的软件系统中，由不同的人开发出来等待组合的情况。所以对于简单较小的桌面应用程序（仅仅是个人使用，或是没有灵活的架构需求），则是无需考虑过多的模式问题。</DIV>
<DIV></DIV>
<DIV>控制反转，我在最初接触到这个概念的时候一直没能明白，再读文章给了我进一步领会的机会。原来</DIV>
<DIV>在我们一般进行代码设计的时候，在某个对象依赖另一个时，一般会直接new一个出来，这本身就是一个强耦合的典型，在需要灵活的程序结构和运行时才决定实现类的需求下，这样的实现无疑增大了维护的难度和浪费。控制反转则是由第三方（Ioc容器）来提供被依赖对象，依赖者仅需提供所需接口及服务声明即可。</DIV>
<DIV></DIV>
<DIV>关于解耦，正如文中所提，ServiceLocator也是一种良好的模式，MF在文中对这两种模式做了较为详尽的比较，甚至更倾向于SL模式提供的更为直观的接口的方式，但是如果SL的设计本身也是个问题，设计的优劣，将影响解耦程度的高低，文中给出了为定位器提供分离的接口和动态服务定位器两种方案。</DIV>
<DIV></DIV>
<DIV>现在较为流行的Ioc容易有PicoContainer和Spring，尤其是后者，现在可以说是如日中天，可惜手头的工作一直未能采用这些先进的框架和容器技术，希望能在E5重构中实践。</DIV><img src ="http://www.blogjava.net/toafu/aggbug/22732.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toafu/" target="_blank">大阿福</a> 2005-12-06 15:56 <a href="http://www.blogjava.net/toafu/archive/2005/12/06/22732.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>