教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

什么是依賴注入?組件通過哪種方式獲取依賴?

更新時間:2021年11月22日11時25分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

計算機(jī)編程是把一些實際問題組織并抽象起來的過程,編寫程序時,開發(fā)人員經(jīng)常使用團(tuán)隊其他成員編寫的代碼或者一些第三方工具(如著名的開源庫或者框架)。隨著項目的擴(kuò)大.項目中需要依賴的模塊會越來越多,這時如何有效地組織這些模塊是非常重要的。依賴注入能夠有效解決模塊問依賴的問題。
依賴注人的英文是Dependency Injection,在軟件開發(fā)中縮寫為DI。依賴注入應(yīng)用了控制反轉(zhuǎn)的設(shè)計思想,因此很多人也稱依賴注人為控制反轉(zhuǎn)??刂品崔D(zhuǎn)(Inversion of Control,loC)是一個重要的面向?qū)ο缶幊痰姆▌t,用來減少計算機(jī)程序的耦合問題,它一般分為兩種類型——依賴注人和依賴查找(Dependency Lookup)。簡單地說,控制反轉(zhuǎn)是一種設(shè)計思想,而依賴注入是控制反轉(zhuǎn)思想的一種實現(xiàn)方式。
在程序開發(fā)中,組件獲取依賴通常有3種方式。
①使用new運(yùn)算符直接創(chuàng)建出依賴。該方式是在自己的應(yīng)用程序中創(chuàng)建依賴對象。它有一個弊端,就是當(dāng)程序的多個模塊都需要應(yīng)用一個對象時,會造成模塊之間的高耦合;如果一個對象參數(shù)過多,有可能還需要對象創(chuàng)建其他參數(shù)對象,所以這種方式無法適合復(fù)雜的應(yīng)用。
②直接引用依賴,如引用全局變量。該方式需要一定的條件,例如依賴對象對于用戶對象是直接開放的,這里不做討論。
③在需要的地方傳人依賴。該方式便是依賴注入,它的重要特點是在系統(tǒng)運(yùn)行中可以把創(chuàng)建依賴對象的控制權(quán)交給IoC容器,由IoC容器動態(tài)地通過注入的方式,向某個對象提供它所需要的其他對象。這樣對象與對象之間松散耦合,方便測試,利于功能復(fù)用,更重要的是使得程序的整個體系結(jié)構(gòu)變得非常靈活。
依賴注人對編程帶來的最大改變不是從代碼上(而是從思想上發(fā)生了“主從換位”的變化,把應(yīng)用程序向依賴對象主動出擊變?yōu)閼?yīng)用程序被動的等待,由IoC容器來創(chuàng)建并注入它所需要的資源。例如將IoC容器看作一個“保姆”,“我”看作用戶對象,“蛋糕”看作依賴對象:當(dāng)“我”想吃“蛋糕”時不是自己來做,而是告訴“保姆”,“保姆”做好之后交給“我”,整個過程如圖4-9所示。

在實際開發(fā)中,loC容器通常會是一個應(yīng)用框架,如Spring、AngularJS等:用戶對象表示開發(fā)人員編寫的程序;依賴對象可以是任何用戶對象所需要依賴的資源,包括對象、第三方資源、常量等。

猜你喜歡:

什么是依賴注入?如何理解依賴注入?

Spring框架怎樣實現(xiàn)依賴注入?

兩種RDD的依賴關(guān)系介紹

傳智教育java后端開發(fā)培訓(xùn)

0 分享到:
和我們在線交談!