IoC是什么
1.IoC是什么
Ioc 全名 Ioc—Inversion of Control
即“控制反轉(zhuǎn)”,不是什么技術(shù)而是一種設(shè)計(jì)思想,意味著想你
設(shè)計(jì)好的對(duì)象交給一個(gè)容器控制而不是傳統(tǒng)的在你的對(duì)象內(nèi)部直接控制。
誰控制誰:在net里,我們直接在對(duì)象內(nèi)部通過new創(chuàng)建對(duì)象,是
程序主動(dòng)去創(chuàng)建依賴對(duì)象,兒Ioc是有一個(gè)專門的容器創(chuàng)建這些對(duì)象
即由Ioc容器控制對(duì)象的創(chuàng)建,誰控制誰?當(dāng)然是IoC 容器控制了
對(duì)象,主要控制了外部資源獲取(不只是對(duì)象包括比如文件等)。
為何是反轉(zhuǎn),哪些方面反轉(zhuǎn)了有反轉(zhuǎn)就有正轉(zhuǎn),傳統(tǒng)應(yīng)用程序
是由我們自己在對(duì)象中主動(dòng)控制去直接獲取依賴對(duì)象,也就是正轉(zhuǎn)
而反轉(zhuǎn)則是由容器來幫忙創(chuàng)建及注入依賴對(duì)象;為何是反轉(zhuǎn)?因?yàn)?br />由容器幫我們查找及注入依賴對(duì)象,對(duì)象只是被動(dòng)的接受依賴對(duì)象
所以是反轉(zhuǎn);哪些方面反轉(zhuǎn)了?依賴對(duì)象的獲取被反轉(zhuǎn)了。
2.IoC能做什么
IoC 不是一種技術(shù),只是一種思想,一個(gè)重要的面向?qū)ο缶幊痰姆▌t,
它能指導(dǎo)我們?nèi)绾卧O(shè)計(jì)出松耦合、更優(yōu)良的程序。傳統(tǒng)應(yīng)用程序都是由
我們?cè)陬悆?nèi)部主動(dòng)創(chuàng)建依賴對(duì)象,從而導(dǎo)致類與類之間高耦合,難于測試
有了IoC容器后,把創(chuàng)建和查找依賴對(duì)象的控制權(quán)交給了容器,由容器
進(jìn)行注入組合對(duì)象,所以對(duì)象與對(duì)象之間是 松散耦合,這樣也方便測試
利于功能復(fù)用,更重要的是使得程序的整個(gè)體系結(jié)構(gòu)變得非常靈活。
3.IoC和DI
DI—Dependency Injection,即“依賴注入”:組件之間依賴關(guān)系
由容器在運(yùn)行期決定,形象的說,即由容器動(dòng)態(tài)的將某個(gè)依賴關(guān)系注入
到組件之中。依賴注入的目的并非為軟件系統(tǒng)帶來更多功能,而是為了
提升組件重用的頻率,并為系統(tǒng)搭建一個(gè)靈活、可擴(kuò)展的平臺(tái)。
通過依賴注入機(jī)制,我們只需要通過簡單的配置,而無需任何代碼就
可指定目標(biāo)需要的資源,完成自身的業(yè)務(wù)邏輯,而不需要關(guān)心具體的
資源來自何處,由誰實(shí)現(xiàn)。
理解DI的關(guān)鍵是:“誰依賴誰,為什么需要依賴,誰注入誰,注入了什么”
那我們來深入分析一下
誰依賴于誰:當(dāng)然是應(yīng)用程序依賴于IoC容器;
為什么需要依賴:應(yīng)用程序需要IoC容器來提供對(duì)象需要的外部資源;
誰注入誰:很明顯是IoC容器注入應(yīng)用程序某個(gè)對(duì)象,應(yīng)用程序依賴的對(duì)象;
注入了什么:就是注入某個(gè)對(duì)象所需要的外部資源(包括對(duì)象、資源、常量數(shù)據(jù))。
IoC和DI由什么關(guān)系呢?其實(shí)它們是同一個(gè)概念的不同角度描述,
由于控制反轉(zhuǎn)概念比較含糊(可能只是理解為容器控制對(duì)象這一個(gè)層面,
很難讓人想到誰來維護(hù)對(duì)象關(guān)系),所以2004年大師級(jí)人物Martin Fowler又
給出了一個(gè)新的名字:“依賴注入”,相對(duì)IoC 而言,“依賴注入”明確描述了
“被注入對(duì)象依賴IoC容器配置依賴對(duì)象”。
總結(jié)
- 上一篇: “作为 AI 我推荐用这项商品”:谷歌宣
- 下一篇: 新路由器怎么连接到旧路由器怎么设置旧路由