如何理解IOC(控制反轉)和DI(依賴注入)?

在一本書上看到一個很好的例子,跟大家分享一下,相信有利于幫助初學者理解控制反轉和依賴注入。

(1)原始社會中,勞動基本沒有分工,需要斧子的人(調用者)只好自己去磨一把斧子,每個人擁有自己的斧子。如果大家把石斧改為鐵斧,需要每個人都要學會磨鐵斧的本領,工作效率極低。
【對應Java中的情形是】當調用者需要被調用者的時候,都必須得通過new來實現(xiàn)。類的耦合度極高,修改維護繁瑣,效率極低。
(2)工業(yè)社會時,工廠出現(xiàn),斧子不再由普通人完成,而由工廠生產(chǎn),當人們需要斧子的時候,可以到工廠購買斧子,無需關心斧子是怎么制造出來的。如果廢棄鐵斧為鋼斧,只需要改變工廠的制造工藝即可,制造工藝是由工廠決定的,工廠生產(chǎn)什么樣的斧子,工人們就用什么樣的斧子。
【對應Java中的情形是】當調用者需要背調用者時,可以使用工廠模式來創(chuàng)建被調用者。由于變化東西被封裝到工廠,所以耦合度降低。但是調用者還是會和工廠耦合。
(3)近代工業(yè)社會,工廠蓬勃發(fā)展,人們需要什么斧子,只需要提供一個斧子圖形,商家會按照你提供的圖形將你的斧子訂做好并送上門。
【對應Java中的情形是】Spring框架的依賴注入

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容