2020-11-08
我對ioc和aop的理解
1.先說一說ioc,ioc叫做控制反轉,又叫做依賴注入。為什麼我們需要ioc呢?我們以往在寫專案時,在一個類中往往要用到另一個類中的屬性和方法,這時我們需要new那個類,這樣我們的類與類之間就形成了一個緊密的關係,類與類的關係更像是機械錶裡很多個齒輪協同工作。這樣的類就會出現一個問題,我們的專案並不是一成不變的,根據客戶的需求就要進行相應的改變,這時我們改變一個類都會形成蝴蝶響應,因為每個類之間關係太過於密切(耦合度太高)。如何能改變這種密切的關係呢?這時ioc就派上用場了,ioc相當於一個大的容器也就相當於一個大的齒輪,各個小齒輪類因他而轉動,每個類需要的物件都由它提供,它也像一個粘合劑把各個類與自己粘合起來。那麼什麼叫控制反轉呢?這是因為本來每個類在建立自己所需要的物件的時候都會主動去new一個所需要物件的類,而ioc容器會建立你需要的類,並讓你接受這個類,你原先是主動建立類,而現在是被動接受類,這就是為什麼叫做控制反轉。
ioc又為什麼叫做依賴注入呢?其實依賴注入是ioc的實現方式,ioc把類所依賴的物件注入到這個類裡。舉個例子,我的電腦比如說是一個類,他需要的物件放在了u盤裡,電腦每回需要物件檔案時,u盤會通過電腦的usb介面把所需要的檔案注入到電腦中,這種方式就就類似於依賴注入。
ioc到底為我們的專案提供了哪些方便呢?
(1)在u盤沒有插入到電腦中,兩者不存在關係,也就是說電腦壞了跟u盤沒關係,反之一樣。ioc和專案中各個類也一樣,這就實現了各元件之間的解耦合。提高了程式碼的可維護性。
(2)usb可以插到電腦,dv等裝置,它可以重複被利用,ioc也是把重複的程式碼整合到一起,然後可以反覆利用,可複用性強。
(3)ioc具有熱插拔特性,ioc生成的物件放到配置檔案中,當我們需要改變這個類時,只需要修改配置檔案就行了
2.aop叫做面向切面化程式設計,它是物件導向程式設計(oop)的延續。比如一個專案就是一個立方體,物件導向就是把這個立方體豎著切了幾刀,切成了各個模組,而面向切面就是橫著切,它把各個類中除業務邏輯部分其他重複的程式碼放到一起統一管理,包括日誌記錄,效能統計,安全控制,事務處理,異常處理等等。aop的底層實現是動態代理。aop不是技術,是程式設計思想,凡是符合aop思想的技術,都是aop的實現。