其實(shí)這倆個(gè)就是指的一個(gè)東西,就是一種編程思想而已,不要想的那么難以理解和高大上。 那么什么是容器,容器直面理解就是裝東西的東西。在編程中,我們常見的變量、對(duì)象屬性都是一個(gè)容器。一個(gè)容器里邊能夠裝什么,完全取決于對(duì)該容器的定義。 然而現(xiàn)在我們討論的是另外一種容器,它存儲(chǔ)的既不是文本、數(shù)值,而是對(duì)象、類、接口通過這種容器,我的得以實(shí)現(xiàn)很多高級(jí)功能,最常用的就是代碼之間的解耦、依賴注入。 那么為什么會(huì)存在倆種概念,為什么要說控制反轉(zhuǎn)和依賴注入呢!在上文也提到過,它們其實(shí)指的就是一種東西,只是描述的角度不同而已。 就跟你是爸爸的兒子,你還是你爺爺?shù)膶O子,不管兒子還是孫子都指的是一個(gè)人。只是站在不同的角度看待問題而已。 「控制反轉(zhuǎn)」 是站在容器的角度看待問題,容器控制著應(yīng)用程序,由容器反向的向應(yīng)用程序注入應(yīng)用程序需要的外部資源。 「依賴注入」 是站在應(yīng)用程序的角度看待問題,應(yīng)用程序依賴容器創(chuàng)建并注入它所需要的外部資源。 「作用」 主要用來減少代碼之間的耦合程度。 有效的分離對(duì)象和應(yīng)用程序所需要的外部資源。 下面?zhèn)z幅圖就可以很清晰的說明問題 「給大家整一個(gè)簡單的案例」 定義倆個(gè)類分別為Person、Car,在Person中實(shí)例并調(diào)用Car中的pay方法。 然后在控制器中調(diào)用,并且打印結(jié)果肯定就是Car返回的123,這個(gè)就不去打印了。 那這個(gè)時(shí)候我們把代碼修改一下,把Car類直接傳給Person類,在Person類中直接用傳過來的對(duì)象去調(diào)用對(duì)應(yīng)的方法。 這只是一個(gè)簡單的實(shí)現(xiàn)過程,為了給閱讀框架容器代碼做一個(gè)鋪墊,在后文中會(huì)詳細(xì)說明框架中的容器注入。 堅(jiān)持學(xué)習(xí)、堅(jiān)持寫博、堅(jiān)持分享是咔咔從業(yè)以來一直所秉持的信念。希望在偌大互聯(lián)網(wǎng)中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。?
新聞標(biāo)題:如何理解控制反轉(zhuǎn)和依賴注入
文章出自:http://weahome.cn/article/cjhhjg.html