您好,登錄后才能下訂單哦!
對于IOC(Inversion of Control),很多人有不同的見解,這相當于“一千人心中有一千個哈姆雷特”,其實說來說去總是離不開“控制反轉”和“依賴注入”。不要把IOC當成一種什么的很高深的技術,它只是一種概念,告訴你Spring針對程序解耦的實現方法。
首先我們來詳細說一下什么叫“控制反轉”,分解為兩個關鍵詞:控制和反轉
①傳統的JavaSE中我們如果在一個對象引入其他對象,習慣用new,這樣我們就可以用這個對象資源,而IOC則是將對象創建其他對象的控制權收到自己手中,當對象需要引用其他對象時,不需要我們new,IOC容器會為你創建,即將對象新建的控制拿在手里。
②所謂new對象是屬于主動的行為,那么被動的獲取對象就屬于被動行為,從我們自己主動創建依賴對象到由容器控制創建以及注入依賴對象,就是一種反轉。
下面圖片很好的反應了這個過程:
當引入IOC容器后,用戶不需要去創建這些類:
知道IOC原理以后,我們需要知道Spring 的IOC帶給我們怎么樣的變化:
實現組件之間的解耦,提高程序的靈活性和可維護性。
但是同時:
1、創建對象的步驟變復雜了,不直觀,當然這是對不習慣這種方式的人來說的。
2、因為使用反射來創建對象,所以在效率上會有些損耗。但相對于程序的靈活性和可維護性來說,這點損耗是微不足道的。
3、缺少IDE重構的支持,如果修改了類名,還需到XML文件中手動修改,這似乎是所有XML方式的缺憾所在。
其次,我們來說一下“依賴注入”(DI)。
依賴注入其實與控制反轉是從不同角度來說明IOC概念,兩個對象之間的依賴關系在程序運行時由外部容器動態的注入依賴行為方式稱為依賴注入 (DI) 。
①如果類A需要運用類B的方法或者屬性,通俗的說他們之前存在依賴關系。
②當A運行時,IOC容器會將類B注入到A中,A不需要知道B什么時候創建以及怎么構造的。
對于IOC,我們只要明白"控制反轉"以及"依賴注入"中的每個字的含義就行了,它代表的只是一種設計原理,并非那么高深。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。