1. 程式人生 > >IoC是什麽

IoC是什麽

註入 形象 span 面向 new 概念 軟件 version injection

1.IoC是什麽
Ioc 全名 Ioc—Inversion of Control
即“控制反轉”,不是什麽技術而是一種設計思想,意味著想你
設計好的對象交給一個容器控制而不是傳統的在你的對象內部直接控制。
誰控制誰:在net裏,我們直接在對象內部通過new創建對象,是
程序主動去創建依賴對象,兒Ioc是有一個專門的容器創建這些對象
即由Ioc容器控制對象的創建,誰控制誰?當然是IoC 容器控制了
對象,主要控制了外部資源獲取(不只是對象包括比如文件等)。
為何是反轉,哪些方面反轉了有反轉就有正轉,傳統應用程序
是由我們自己在對象中主動控制去直接獲取依賴對象,也就是正轉
而反轉則是由容器來幫忙創建及註入依賴對象;為何是反轉?因為
由容器幫我們查找及註入依賴對象,對象只是被動的接受依賴對象
所以是反轉;哪些方面反轉了?依賴對象的獲取被反轉了。
2.IoC能做什麽


IoC 不是一種技術,只是一種思想,一個重要的面向對象編程的法則,
它能指導我們如何設計出松耦合、更優良的程序。傳統應用程序都是由
我們在類內部主動創建依賴對象,從而導致類與類之間高耦合,難於測試
有了IoC容器後,把創建和查找依賴對象的控制權交給了容器,由容器
進行註入組合對象,所以對象與對象之間是 松散耦合,這樣也方便測試
利於功能復用,更重要的是使得程序的整個體系結構變得非常靈活。
3.IoC和DI
DI—Dependency Injection,即“依賴註入”:組件之間依賴關系
由容器在運行期決定,形象的說,即由容器動態的將某個依賴關系註入
到組件之中。依賴註入的目的並非為軟件系統帶來更多功能,而是為了
提升組件重用的頻率,並為系統搭建一個靈活、可擴展的平臺。
通過依賴註入機制,我們只需要通過簡單的配置,而無需任何代碼就
可指定目標需要的資源,完成自身的業務邏輯,而不需要關心具體的
資源來自何處,由誰實現。
理解DI的關鍵是:“誰依賴誰,為什麽需要依賴,誰註入誰,註入了什麽”
那我們來深入分析一下
  誰依賴於誰:當然是應用程序依賴於IoC容器;
  為什麽需要依賴:應用程序需要IoC容器來提供對象需要的外部資源;
  誰註入誰:很明顯是IoC容器註入應用程序某個對象,應用程序依賴的對象;
  註入了什麽:就是註入某個對象所需要的外部資源(包括對象、資源、常量數據)。
  IoC和DI由什麽關系呢?其實它們是同一個概念的不同角度描述,
由於控制反轉概念比較含糊(可能只是理解為容器控制對象這一個層面,
很難讓人想到誰來維護對象關系),所以2004年大師級人物Martin Fowler又
給出了一個新的名字:“依賴註入”,相對IoC 而言,“依賴註入”明確描述了
“被註入對象依賴IoC容器配置依賴對象”。

IoC是什麽