IOC
ioc不是spring提出的,spring只是ioc的一個實現
什麼ioc
ioc(inversion of control)控制反轉,他是一個技術思想,不是技術實現
ioc是做什麼的
java領域對象的創建、管理問題
傳統開發方式:類A依賴類B,在類中創建一個類B的對象
IOC開發方式:不需要創建對象,由容器幫忙創建對象並返回,需要哪個對象告訴IOC容器,由容器返回即可
利弊:失去了創建對象的權利,但是同時也得到了不需要管理對象創建、依賴等一系列好處
爲什麼叫控制反轉
控制:對象的創建管理和實例化的權利
反轉:控制權交給IOC容器了
IOC解決了什麼問題
ioc解決了對象之間的耦合問題
IOC和DI的區別
DI:Dependency Injection 依賴注入
IOC和DI描述的是同一件事情(對象實例化以及依賴關係管理),角度不同
IOC站在對象角度,對象實例化和管理法人權利交給了容器
DI是站在容器的角度,容器會把對象依賴的其他對象注入
AOP
什麼是AOP
Aspect oriented programming 面向切面編程
AOP是OOP的眼神
OOP三大特徵:封裝、繼承、多態
OOP是垂直縱向繼承體系
OOP可以解決大部分情況下的代碼重複問題,但是有些問題解決不了
橫切邏輯代碼的問題
-
代碼重複
-
橫切代碼和邏輯代碼混合在一起,不利於維護
AOP可以解決
AOP解決了什麼問題
在不改變原有代碼邏輯的情況下,增強橫切邏輯代碼,根本上解耦合,解決代碼重複問題
爲什麼叫面向切面編程
切:橫切邏輯,原有邏輯代碼不能動,只能操作橫切邏輯
面:橫切邏影響很多方法,每個方法是一個點,多個點構成面