JAVA培訓什么是控制度反轉(zhuǎn)IOC_第1頁
JAVA培訓什么是控制度反轉(zhuǎn)IOC_第2頁
JAVA培訓什么是控制度反轉(zhuǎn)IOC_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

JAVA培:什么是控反轉(zhuǎn)()一、IoC理論的背景我們都知道在采用面向?qū)ο蠓椒ㄔO(shè)計的軟件系統(tǒng)中它的底層實現(xiàn)都是由N個對象組成的,所有的對象通過彼此的合作,最終實現(xiàn)系統(tǒng)的業(yè)務(wù)邏輯。圖:軟件系統(tǒng)中耦合的對象如果我們打開機械式手表的后蓋就會看到與上面類似的情形各個齒輪分別帶動時針分針和秒針順時針旋轉(zhuǎn)從而在表盤上產(chǎn)生正確的時間圖1中描述的就是這樣的一個齒輪組擁有多個獨立的齒輪些齒輪相互嚙合在一起,協(xié)同工作,共同完成某項任務(wù)。我們可以看到,在這樣的齒輪組中,如果有一個齒輪出了問題,就可能會影響到整個齒輪組的正常運轉(zhuǎn)。齒輪組中齒輪之間的嚙合關(guān),與軟件系統(tǒng)中對象之間的耦合關(guān)系非常相似。對象之間的耦合關(guān)系是無法避免的,也是必要的,這是協(xié)同工作的基礎(chǔ)?,F(xiàn)在,伴隨著工業(yè)級應(yīng)用的規(guī)模越來越龐大對象之間的依賴關(guān)系也越來越復雜經(jīng)常會出現(xiàn)對象之間的多重依賴性關(guān)系因此架構(gòu)師和設(shè)計師對于系統(tǒng)的分析和設(shè)計將面臨更大的挑戰(zhàn)對象之間耦合度過高的系統(tǒng)必然會出現(xiàn)牽一發(fā)而動全身的情形。圖2:對象之間復雜的依賴關(guān)系耦合關(guān)系不僅會出現(xiàn)在對象與對象之間會出現(xiàn)在軟件系統(tǒng)的各模塊之間,以及軟件系統(tǒng)和硬件系統(tǒng)之間如何降低系統(tǒng)之間模塊之間和對象之間的耦合

度,是軟件工程永遠追求的目標之一。為了解決對象之間的耦合度過高的問題,軟件專家MichaelMattson提出了IOC理論,用來實現(xiàn)對象之間的“解耦前這個理論已經(jīng)被成功地應(yīng)用到實踐當中,很多的J2EE項目均采用了IOC框架產(chǎn)品Spring。二、什么是控制反轉(zhuǎn)(IoC)IOC是InversionofControl縮寫,多數(shù)書籍翻譯成“控制反轉(zhuǎn)有些書籍翻譯成為“控制反向”或者“控制倒置1996年,MichaelMattson在一篇有關(guān)探討面向?qū)ο罂蚣艿奈恼轮?,首先提出了IOC這個概念。對于面向?qū)ο笤O(shè)計及編程的基本思想,前面我們已經(jīng)講了很多了不再贅述簡單來說就是把復雜系統(tǒng)分解成相互合作的對象這些對象類通過封裝以后內(nèi)部實現(xiàn)對外部是透明的從而降低了解決問題的復雜度而且可以靈活地被重用和擴展。理論提出的觀點大體是這樣的:借助于“第三方”實現(xiàn)具有依賴關(guān)系的對象之間的解耦,如下圖:圖:IOC解耦過程大家看到了吧,由于引進了中間位置的“第三方就是容器,使得A、、、D這4個對象沒有了耦合關(guān)系,齒輪之間的傳動全部依靠“第三方”了,全部對象的控制權(quán)全部上繳給“第三方”容器,所以,IOC容器成了整個系統(tǒng)的關(guān)鍵核心,它起到了一種類似“粘合劑”的作用,把系統(tǒng)中的所有對象粘合在一起發(fā)揮作用,如果沒有這個“粘合劑對象與對象之間會彼此失去聯(lián)系,這就是有人把IOC容器比喻成“粘合劑”的由來。我們再來做個試驗:把上圖中間的IOC容器拿掉,然后再來看看這套系統(tǒng):圖:拿掉IoC容器后的系統(tǒng)我們現(xiàn)在看到的畫面就是我們要實現(xiàn)整個系統(tǒng)所需要完成的全部內(nèi)容這時候,A、、、D這4個對象之間已經(jīng)沒有了耦合關(guān)系,彼此毫無聯(lián)系,這樣

的話,當你在實現(xiàn)A的時候,根本無須再去考慮C和D了,對象之間的依賴關(guān)系已經(jīng)降低到了最低程度以真能實現(xiàn)IOC容器系統(tǒng)開發(fā)而言,這將是一件多么美好的事情,參與開發(fā)的每一成員只要實現(xiàn)自己的類就可以了,跟別人沒有任何關(guān)系!我們再來看看制反轉(zhuǎn)IOC)到底為什么要起這么個名字?我來對比一下:軟件系統(tǒng)在沒有引入IOC容器之前如第一個圖中所示象A依賴于對象B,那么對象A在初始化或者運行到某一點的時候,自己必須主動去創(chuàng)建對象B或者使用已經(jīng)創(chuàng)建的對象B論是創(chuàng)建是使用對象權(quán)都在自己手上。軟件系統(tǒng)在引入容器之后,這種情形就完全改變了,如第三個圖所示,由于IOC容器的加入,對象A與對象B之間失去了直接聯(lián)系,所以,當對象A運行到需要對象B的時候容器會主動創(chuàng)建

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論