IoC(控制的(de)反轉:Inverse of Control)是Spring容器的(de)内核,AOP、聲明(míng)式事務等功能在此基礎上開花結果。但是IoC這(zhè)個(gè)重要的(de)概念卻比較晦澀隐諱,不容易讓人(rén)望文生義,這(zhè)不能不說是一大(dà)遺憾。
那到底是什(shén)麽東西的(de)“控制”被“反轉”了(le)呢(ne)?簡單地說,即是某一接口具體實現類的(de)選擇控制權從調用(yòng)類中移除,轉交給第三方(如配置文件XML)決定。
因爲IoC确實不夠開門見山,因此業界曾進行了(le)廣泛的(de)討(tǎo)論,最終軟件界的(de)泰鬥級人(rén)物(wù)Martin Fowler提出了(le)DI(依賴注入:Dependency Injection)的(de)概念用(yòng)以代替IoC,即讓調用(yòng)類對(duì)某一接口實現類的(de)依賴關系由第三方(容器或協作類)注入,以移除調用(yòng)類對(duì)某一接口實現類的(de)依賴。“依賴注入”這(zhè)個(gè)名詞顯然比“控制反轉”直接明(míng)了(le)、易于理(lǐ)解。
|