關於 依賴注入
與 控制反轉
的概念有些人覺得很難理解,最近在給別人講這個概念的時候梳理了一個比較好理解的解釋,而且我認為非技術人員也應該能聽的懂,因此分享給大家,希望下次你在給別人講的時候也能講的明白。
其實 依賴注入
和 控制反轉
說的是同一件事情,只是站的角度不同而已。
我們就拿超人和小怪獸的事情來做類比物件。
地球受到了威脅,不斷有小怪獸來想要破壞地球,每來一個小怪獸我們就需要找一個超人去對付他,一個超人肯定是不夠的,因為每次來到小怪獸都是不一樣的,他們所具有的能力也是不一樣的。
因此我們必須找到合適的超人去對付他,最壞的情況是每來一個小怪獸我們就要找一個或者製造一個新超人,那麼來十個小怪獸,我們就要製造十個,來百個就要製造百個,來千,來萬,來億我們就要製造相應的超人,而大部分超人只能用一次。
為了解決這個問題我們引入依賴注入和控制反轉的概念,我們將超人和超能力分開,獨立的超人和獨立的超能力,當一個小怪獸來的時候我們找到超人,將相應的超能力給予他,讓他去消滅小怪獸。
這樣的話我們只需要幾個超人就好了,我們不再需要製造超人,而是研究如何製造更多更好的超能力給超人使用。
超能力和超人不再是強依賴關係。超能力是由外部給予超人的,超人和超能力有依賴,但是這個依賴是外部給予,因此我們可以說超能力是由外部注入給他的,所以這就叫 依賴注入
。
而反過來說,超人具有何種超能力不是他內部自身控制的,而是由外部控制的,相當於將超能力具有何種功效交給了外部,外部來決定超人該有的超能力,所以超能力的控制權被由自身控制反轉為外部控制,這被稱為 控制反轉
。
這就是關於 依賴注入
和 控制反轉
的我的比較好理解的解釋。它能較好的解決物件與物件之間的強耦合問題,同時也能做的按需使用按需載入。
順便說一下,鋼鐵俠和蝙蝠俠更受歡迎的原因我認為就是因為他們的超能力是外部給予的,而非自身的,因此可以不斷有新的超能力給他們使用,因此也更有看點和新鮮感。