1. 程式人生 > >IOC與DI的講解以及依賴注入的三種方式

IOC與DI的講解以及依賴注入的三種方式

首先:第一個問題,參與者都有誰?
1)物件
2)IOC/DI容器
3)某個物件的外部資源
第二問題:依賴,誰依賴誰?為什麼需要依賴?
依賴嘛,很好理解的,物件依賴於IOC/DI容器,至於為什麼要依賴呢?物件需要IOC/DI容器來提供物件需要的外部資源。
第三個問題:注入,誰注入誰?又注入了什麼呢?
顯而易見是IOC/DI容器注入物件,注入了what呢?肯定注入的是某個需要的東西那就是注入物件所需要的資源,肯定不會注入無關緊要的內容,你說呢?
第四個問題:控制反轉,誰控制誰?控制什麼?為什麼叫反轉呢?存在正轉嗎?
控制反轉,控制什麼?肯定是IOC/DI容器控制物件,主要是控制物件例項的建立,反轉是相對於正向而言的,那麼什麼算是正向的呢?考慮一下常規情況下的應用程式,如果要在A裡面使用C,你會怎麼做呢?當然是直接去建立C的物件,也就是說,是在A類中主動去獲取所需要的外部資源C,這種情況被稱為正向的。那麼什麼是反向呢?就是A類不再主動去獲取C,而是被動等待,等待IoC/DI的容器獲取一個C的例項,然後反向的注入到A類中。
第五個問題:控制反轉和依賴注入式同一個概念嗎?

依賴注入和控制反轉是對同一件事情的不同描述,從某個方面講,就是它們描述的角度不同。依賴注入是從應用程式的角度在描述,可以把依賴注入描述完整點:應用程式依賴容器建立並注入它所需要的外部資源;而控制反轉是從容器的角度在描述,描述完整點:容器控制應用程式,由容器反向的嚮應用程式注入應用程式所需要的外部資源。