中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

控制反轉和依賴注入有哪些區別

發布時間:2020-09-09 10:30:01 來源:億速云 閱讀:297 作者:小新 欄目:編程語言

小編給大家分享一下控制反轉和依賴注入有哪些區別,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

 控制反轉與依賴注入的區別有:依賴注入從應用程序的角度來描述,而控制反轉是從容器的角度描述;控制反轉側重于原理,而依賴注入側重于實現等

控制反轉和依賴注入有哪些區別

控制反轉和依賴注入的區別

IOC   inversion of control  控制反轉

DI   Dependency Injection  依賴注入

要理解這兩個概念,首先要搞清楚以下幾個問題:

參與者都有誰?

依賴:誰依賴于誰?為什么需要依賴?

注入:誰注入于誰?到底注入什么?

控制反轉:誰控制誰?控制什么?為何叫反轉(有反轉就應該有正轉了)?

依賴注入和控制反轉是同一概念嗎?

下面就來簡要的回答一下上述問題,把這些問題搞明白了,IOC/DI也就明白了。

(1)參與者都有誰:

一般有三方參與者,一個是某個對象;一個是IOC/DI的容器;另一個是某個對象的外部資源。

某個對象指的就是任意的、普通的Java對象

IOC/DI的容器簡單點說就是指用來實現IOC/DI功能的一個框架程序

對象的外部資源指的就是對象需要的,但是是從對象外部獲取的,都統稱資源,比如:對象需要的其它對象、或者是對象需要的文件資源等等。

(2)誰依賴于誰:

當然是某個對象依賴于IOC/DI的容器

(3)為什么需要依賴:

對象需要IOC/DI的容器來提供對象需要的外部資源

(4)誰注入于誰:

很明顯是IOC/DI的容器注入某個對象

(5)到底注入什么:

就是注入某個對象所需要的外部資源

(6)誰控制誰:

當然是IOC/DI的容器來控制對象了

(7)控制什么:

主要是控制對象實例的創建

(8)為何叫反轉:

反轉是相對于正向而言的,那么什么算是正向的呢?考慮一下常規情況下的應用程序,如果要在A里面使用C,你會怎么做呢?當然是直接去創建C的對象,也就是說,是在A類中主動去獲取所需要的外部資源C,這種情況被稱為正向的。那么什么是反向呢?就是A類不再主動去獲取C,而是被動等待,等待IOC/DI的容器獲取一個C的實例,然后反向的注入到A類中。

用圖例來說明一下,先看沒有IOC/DI的時候,常規的A類使用C類的示意圖,如圖所示:

控制反轉和依賴注入有哪些區別

當有了IOC/DI的容器后,A類不再主動去創建C了,如圖所示:

控制反轉和依賴注入有哪些區別

而是被動等待,等待IOC/DI的容器獲取一個C的實例,然后反向的注入到A類中,如圖所示:

控制反轉和依賴注入有哪些區別

(9)依賴注入和控制反轉是同一概念嗎?

根據上面的講述,應該能看出來,依賴注入和控制反轉是對同一件事情的不同描述,從某個方面講,就是它們描述的角度不同。依賴注入是從應用程序的角度在描述,描述完整點:應用程序依賴容器創建并注入它所需要的外部資源;而控制反轉是從容器的角度在描述,描述完整點:容器控制應用程序,由容器反向的向應用程序注入應用程序所需要的外部資源。

總結:

其實IOC/DI對編程帶來的最大改變不是從代碼上,而是從思想上,發生了“主從換位”的變化。應用程序原本是老大,要獲取什么資源都是主動出擊,但是在IOC/DI思想中,應用程序就變成被動的了,被動的等待IOC/DI容器來創建并注入它所需要的資源了。這么小小的一個改變其實是編程思想的一個大進步,這樣就有效的分離了對象和它所需要的外部資源,使得它們松散耦合,有利于功能復用,更重要的是使得程序的整個體系結構變得非常靈活

看完了這篇文章,相信你對控制反轉和依賴注入有哪些區別有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

莱芜市| 馆陶县| 阳新县| 宁晋县| 江源县| 偏关县| 武清区| 保定市| 泾川县| 东城区| 宜川县| 象州县| 浙江省| 吐鲁番市| 稻城县| 苏州市| 循化| 永宁县| 长春市| 奉节县| SHOW| 南汇区| 清新县| 平罗县| 抚顺县| 余江县| 龙川县| 团风县| 南澳县| 南充市| 井研县| 开平市| 泸溪县| 都昌县| 化德县| 湟源县| 莒南县| 海盐县| 阿拉善盟| 青铜峡市| 略阳县|