溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Spring3.0第二講:什么是IOC

發(fā)布時(shí)間:2020-07-07 19:10:04 來源:網(wǎng)絡(luò) 閱讀:403 作者:zangyanan2016 欄目:開發(fā)技術(shù)

  對于IOC(Inversion of Control),很多人有不同的見解,這相當(dāng)于“一千人心中有一千個(gè)哈姆雷特”,其實(shí)說來說去總是離不開“控制反轉(zhuǎn)”和“依賴注入”。不要把IOC當(dāng)成一種什么的很高深的技術(shù),它只是一種概念,告訴你Spring針對程序解耦的實(shí)現(xiàn)方法。

     首先我們來詳細(xì)說一下什么叫“控制反轉(zhuǎn)”,分解為兩個(gè)關(guān)鍵詞:控制和反轉(zhuǎn)

    ①傳統(tǒng)的JavaSE中我們?nèi)绻谝粋€(gè)對象引入其他對象,習(xí)慣用new,這樣我們就可以用這個(gè)對象資源,而IOC則是將對象創(chuàng)建其他對象的控制權(quán)收到自己手中,當(dāng)對象需要引用其他對象時(shí),不需要我們new,IOC容器會(huì)為你創(chuàng)建,即將對象新建的控制拿在手里。

    ②所謂new對象是屬于主動(dòng)的行為,那么被動(dòng)的獲取對象就屬于被動(dòng)行為,從我們自己主動(dòng)創(chuàng)建依賴對象到由容器控制創(chuàng)建以及注入依賴對象,就是一種反轉(zhuǎn)。

  下面圖片很好的反應(yīng)了這個(gè)過程:

  Spring3.0第二講:什么是IOC

當(dāng)引入IOC容器后,用戶不需要去創(chuàng)建這些類:

Spring3.0第二講:什么是IOC

知道IOC原理以后,我們需要知道Spring 的IOC帶給我們怎么樣的變化:

實(shí)現(xiàn)組件之間的解耦,提高程序的靈活性和可維護(hù)性。

但是同時(shí):

1、創(chuàng)建對象的步驟變復(fù)雜了,不直觀,當(dāng)然這是對不習(xí)慣這種方式的人來說的。

2、因?yàn)槭褂梅瓷鋪韯?chuàng)建對象,所以在效率上會(huì)有些損耗。但相對于程序的靈活性和可維護(hù)性來說,這點(diǎn)損耗是微不足道的。

3、缺少IDE重構(gòu)的支持,如果修改了類名,還需到XML文件中手動(dòng)修改,這似乎是所有XML方式的缺憾所在。

  其次,我們來說一下“依賴注入”(DI)。

  依賴注入其實(shí)與控制反轉(zhuǎn)是從不同角度來說明IOC概念,兩個(gè)對象之間的依賴關(guān)系在程序運(yùn)行時(shí)由外部容器動(dòng)態(tài)的注入依賴行為方式稱為依賴注入 (DI) 

 ①如果類A需要運(yùn)用類B的方法或者屬性,通俗的說他們之前存在依賴關(guān)系。

 ②當(dāng)A運(yùn)行時(shí),IOC容器會(huì)將類B注入到A中,A不需要知道B什么時(shí)候創(chuàng)建以及怎么構(gòu)造的。

對于IOC,我們只要明白"控制反轉(zhuǎn)"以及"依賴注入"中的每個(gè)字的含義就行了,它代表的只是一種設(shè)計(jì)原理,并非那么高深。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI