什麽是IoC
Ioc—Inversion of
Control,即“控制反轉”,不是什麽技術,而是壹種設計思想。在Java開發中,Ioc意味著將妳設計好的對象交給容器控制,而不是傳統的在妳的對象內部直接控制。如何理解好Ioc呢?理解好Ioc的關鍵是要明確“誰控制誰,控制什麽,為何是反轉(有反轉就應該有正轉了),哪些方面反轉了”,那我們來深入分析壹下:
控制是什麽:傳統Java
SE程序設計,我們直接在對象內部通過new進行創建對象,是程序主動去創建依賴對象;而IoC是有專門壹個容器來創建這些對象,即由Ioc容器來控制對象的創建;誰控制誰?當然是IoC
容器控制了對象;控制什麽?那就是主要控制了外部資源獲取(不只是對象包括比如文件等)。
為何是反轉,哪些方面反轉了:有反轉就有正轉,傳統應用程序是由我們自己在對象中主動控制去直接獲取依賴對象,也就是正轉;而反轉則是由容器來幫忙創建及註入依賴對象;為何是反轉?因為由容器幫我們查找及註入依賴對象,對象只是被動的接受依賴對象,所以是反轉;哪些方面反轉了?依賴對象的獲取被反轉了。
IoC能做什麽
IoC不是壹種技術,只是壹種思想,壹個重要的面向對象編程的法則,它能指導我們如何設計出松耦合、更優良的程序。傳統應用程序都是由我們在類內部主動創建依賴對象,從而導致類與類之間高耦合,難於測試;有了IoC容器後,把創建和查找依賴對象的控制權交給了容器,由容器進行註入組合對象,所以對象與對象之間是松散耦合,這樣也方便測試,利於功能復用,更重要的是使得程序的整個體系結構變得非常靈活。
其實IoC對編程帶來的最大改變不是從代碼上,而是從思想上,發生了“主從換位”的變化。應用程序原本是老大,要獲取什麽資源都是主動出擊,但是在IoC/DI思想中,應用程序就變成被動的了,被動的等待IoC容器來創建並註入它所需要的資源了。
IoC和DI
DI—Dependency
Injection,即“依賴註入”:是組件之間依賴關系由容器在運行期決定,形象的說,即由容器動態的將某個依賴關系註入到組件之中。依賴註入的目的並非為軟件系統帶來更多功能,而是為了提升組件重用的頻率,並為系統搭建壹個靈活、可擴展的平臺。通過依賴註入機制,我們只需要通過簡單的配置,而無需任何代碼就可指定目標需要的資源,完成自身的業務邏輯,而不需要關心具體的資源來自何處,由誰實現。
註:如果想要更加深入的了解IoC和DI,請參考大師級人物Martin Fowler的壹篇經典文章《Inversion of Control
Containers and the Dependency Injection
pattern》,原文地址:/articles/injection.html。
AOP:面向切面編程
什麽是AOP:
概念:在軟件業,AOP為Aspect Oriented
Programming的縮寫,意為:面向切面編程,通過預編譯方式和運行期動態代理實現程序功能的統壹維護的壹種技術。AOP是OOP的延續,是軟件開發中的壹個熱點,也是Spring框架中的壹個重要內容,是函數式編程的壹種衍生範型。利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發的效率。(百度百科)
簡單的說:就是將程序中重復的代碼抽取出來,在需要執行的時候,使用動態代理的技術,在不修改源碼的基礎上,對我們的已有方法進行增強。
AOP的作用和優勢:
作用:從定義中來看,就是為了在程序運行期間,不修改源碼對已有方法進行增強。
優勢:減少重復代碼 提交了開發效率 維護方便
實現方式: 就是動態代理的技術
具體的作用:實現事務的控制 日誌 和 安全模塊
想系統的學習編程可以來我這看看,希望對您有所幫助!~