<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Calvin's Tech Space

    成于堅忍,毀于浮躁

       :: 首頁 :: 聯系 :: 聚合  :: 管理

     (本文轉自http://www.cnblogs.com/zhuweisky/archive/2006/01/19/320220.html)

    一個朋友發了封mail問了幾個問題,其中的一個是關于IoC和DI的:
    Inversion of Control和Dependency Injection 是什么關系,我認為兩個詞代表的是同一個意思,只是兩種不同的表示,對嗎?

    下面是我對這個問題的一些理解。
    準確的說,IoC和DI并不相同,這一點從字面上就可以看出,否則,它們可以叫一個名字。^_^

    理解IoC,我們需要知道Control是什么,它又是怎樣被Inversion的。其實,IoC是用來說明“程序庫”和“框架”區別的最好證據。在使用程序庫的時候,控制權是掌握在我們手中的,我們編寫的代碼調用程序庫的實現,完成相應的功能,想想我們使用JDK的情況。使用框架的時候,控制權則掌握在框架手中,我們的代碼最終是由框架調用,一個常見的例子是Servlet,我們編寫的Servlet代碼是放在整個Servlet的框架中,由Web容器進行調用。這就是差異所在。我們更習慣于自己掌控一切,因此,對框架掌握控制權的這種情況,我們用“Inversion”來形容,這也是Martin Fowler在那篇給DI正名的文章中提到,所有框架都是IoC的原因。

    Spring的核心容器是一個框架,所以,我們可以說它是IoC,但是就如前面所說,每個框架都有IoC,所以,僅僅用IoC是不足以說明一切的。Spring核心容器完成的是組件組裝的過程,這是它和其它普通框架區別最為顯著的地方。如果說用IoC描述這個框架,那么,這里所指的Control實際上是組件的組裝過程。

    站在Spring核心容器的層面上看,它完成組裝過程是把組件所依賴的零部件給組件安裝上去。站在單個組件層面上看,它所需要的零部件是由外部給它安裝的,這個過程就像是把“Dependency”這管藥水用注射器“Injection”到組件的身體中去,所以,我們稱之為“Dependency Injection”。

    完成組件組裝的容器也不只是注入一種形式,還有一種常見的方式是“Dependency Lookup”,即每個組件自己去查找自己所需要的內容。至于到哪去找,也有不同的實現方式,有固定到某個地方(比如使用靜態方法),有把查找點通過DI的方式注入進來等等。

    Martin Fowler的文章已經很清楚的解釋了IoC和DI這兩個概念,我們只需要去細細品味。

    posted on 2009-08-18 12:12 calvin 閱讀(210) 評論(0)  編輯  收藏 所屬分類: Framework

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 美女无遮挡拍拍拍免费视频| 国产日本亚洲一区二区三区| 日韩精品免费一线在线观看| 四虎成人免费网站在线| 亚洲综合中文字幕无线码| 成年女人毛片免费观看97| 天堂亚洲国产中文在线| 日韩在线免费播放| 美女隐私免费视频看| 又粗又黄又猛又爽大片免费| 精品国产亚洲一区二区三区在线观看| 国产老女人精品免费视频| 免费观看又污又黄在线观看| 国产午夜亚洲精品午夜鲁丝片 | 亚洲系列国产精品制服丝袜第| 久久国产乱子伦精品免费看| 久久久久亚洲AV无码永不| 99久久免费国产香蕉麻豆| 亚洲色偷偷综合亚洲AV伊人蜜桃 | 免费无码又爽又刺激网站| 亚洲成AV人在线播放无码| 99久久精品免费视频| 亚洲香蕉在线观看| 国产精品酒店视频免费看| 一区视频免费观看| 亚洲精品国产成人专区| 永久免费av无码不卡在线观看| 亚洲AV无码专区在线电影成人 | 麻豆一区二区三区蜜桃免费| 亚洲线精品一区二区三区影音先锋| 免费91麻豆精品国产自产在线观看| 亚洲精品91在线| 免费大学生国产在线观看p| 黄网站免费在线观看| 在线综合亚洲欧洲综合网站| 亚洲视频人成在线播放| 67194成手机免费观看| 看Aⅴ免费毛片手机播放| 久久久久亚洲AV片无码下载蜜桃 | 亚洲av中文无码乱人伦在线播放| 91九色视频无限观看免费|