? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?淺談IOC與DI
IOC是什么绰精?? ?
? ????ioc—Inversion of Control撒璧,即“控制反轉(zhuǎn)”,不是什么技術(shù)笨使,而是一種設(shè)計(jì)思想卿樱。
? ? 傳統(tǒng)java應(yīng)用程序中依賴對象的創(chuàng)建都是在對象內(nèi)部進(jìn)行的。而IOC則是專門有一個(gè)容器負(fù)責(zé)管理組件硫椰,負(fù)責(zé)創(chuàng)建對象繁调。對象的控制權(quán)發(fā)生了改變。就像一個(gè)汽修廠靶草,以前我都是需要什么零件再去找什么零件蹄胰。而現(xiàn)在是提前約定好我需要什么零件,到時(shí)候IOC容器再給我送來奕翔。
? ? 控制反轉(zhuǎn)是控制的誰裕寨?控制的是依賴對象。
? ? 為什么說反轉(zhuǎn)了派继?因?yàn)橐郧笆菓?yīng)用程序自己創(chuàng)建依賴對象宾袜,現(xiàn)在則由IOC容器創(chuàng)建。依賴對象的控制權(quán)發(fā)生了轉(zhuǎn)變驾窟。
DI是什么庆猫?
? ??DI—Dependency Injection,即“依賴注入”绅络。
? ?什么是依賴阅悍?依賴是兩個(gè)組成部分的一種狀態(tài)好渠。一個(gè)類的行為需要依賴另一個(gè)類,比如人這個(gè)類需要腳這個(gè)類來支持节视。這個(gè)‘腳’就是IOC容器要注入的依賴拳锚。依賴注入即IOC給應(yīng)用程序的某個(gè)對象注入他所需要的外部資源(包括對象但不止于對象)。
IOC和DI的關(guān)系寻行?
? ? 其實(shí)他們是同一個(gè)概念不同角度的描述霍掺。
? ??最后舉個(gè)例,我是個(gè)修理工拌蜘。以前我修車都是需要什么零件去找什么零件杆烁,現(xiàn)在老板給我配了個(gè)助手,專門管理零件简卧,他看到我需要什么零件就給我什么零件兔魂。
? ? 從我們兩個(gè)人的關(guān)系來說我還是主要的,但是我需要依賴他來給我提供幫助举娩。
? ? 從控制權(quán)的角度來說其實(shí)這是老板為了提防我析校,把我對零件的控制權(quán)交給了我的助手。