根據(jù)馬丁·福勒(Martin Fowler)的論文,控制反轉(zhuǎn)是程序控制流反向的原理:外部源(框架,服務(wù),其他組件)代替程序控制程序流,而由程序控制流它。就像我們將某些東西插入其他東西一樣。他提到了有關(guān)EJB 2.0的示例:例如,會(huì)話Bean接口定義了ejbRemove,ejbPassivate(存儲(chǔ)到輔助存儲(chǔ))和ejbActivate(從被動(dòng)狀態(tài)恢復(fù))。您不必控制何時(shí)調(diào)用這些方法,而可以控制它們的作用。容器給我們打電話,我們不給它打電話。這導(dǎo)致框架和庫(kù)之間的差異:控制反轉(zhuǎn)是使框架與庫(kù)不同的關(guān)鍵部分。庫(kù)本質(zhì)上是您可以調(diào)用的一組函數(shù),這些天通常組織成類。每個(gè)調(diào)用都會(huì)執(zhí)行一些工作,并將控制權(quán)返回給客戶端。我認(rèn)為,DI是IOC的觀點(diǎn)意味著對(duì)象的依賴關(guān)系被顛倒了:相反,它控制著它自己的依賴關(guān)系,生命周期……還有其他事情為您服務(wù)。但是,正如您手動(dòng)告訴我的那樣,DI不一定是IOC。我們?nèi)匀豢梢該碛蠨I而沒(méi)有IOC。但是,在本文中(來(lái)自pococapsule,這是另一個(gè)C / C ++的IOC框架),它表明,由于IOC和DI,IOC容器和DI框架要優(yōu)于J2EE,因?yàn)镴2EE將框架代碼混合到了組件中,因此不會(huì)使其成為普通的Java / C ++對(duì)象(POJO / POCO)。除依賴注入模式以外的控制容器的反轉(zhuǎn)(歸檔鏈接)進(jìn)一步閱讀以了解舊的基于組件的開發(fā)框架有什么問(wèn)題,該問(wèn)題導(dǎo)致了上面的第二篇論文:控制反轉(zhuǎn)的原因和內(nèi)容(歸檔鏈接)我的問(wèn)題:什么是IOC和DI?我很困惑?;趐ococapsule,IOC不僅比反轉(zhuǎn)對(duì)象或程序員與框架之間的控制更重要。
添加回答
舉報(bào)
0/150
提交
取消