注意:IOC和AOP不是spring提出的,在spring以前就已經存在,只不過更偏向於理論化,spring在技術層次把這兩個思想作了⾮常好的實現(Java)spring
IoC Inversion of Control (控制反轉/反轉控制):注意它是⼀個技術思想,不是⼀個技術實現編程
new
對象了,⽽是由IoC容器(Spring框架)去幫助咱們實例化對象而且管理它,咱們須要使⽤哪一個對象,去問IoC容器要便可咱們喪失了⼀個權利(建立、管理對象的權利),獲得了⼀個福利(不⽤考慮對象的建立、管理等⼀系列 事情)
IoC解決對象之間的耦合問題框架
DI:DependancyInjection(依賴注⼊) 怎麼理解?
IOC和DI描述的是同⼀件事情,只不過⻆度不⼀樣罷了
oop
是⼀種垂直繼承體系
OOP編程思想能夠解決⼤多數的代碼重複問題,可是有⼀些狀況是處理不了的,⽐以下⾯的在頂級⽗類Animal中的多個⽅法中相同位置出現了重複代碼,OOP就解決不了oop
橫切邏輯代碼存在什麼問題:spa
AOP出場,AOP獨闢蹊徑提出橫向抽取機制,將橫切邏輯代碼和業務邏輯代碼分析code
代碼拆分容易,那麼如何在不改變原有業務邏輯的狀況下,悄⽆聲息的把橫切邏輯代碼應⽤到原有的業務邏輯中,達到和原來⼀樣的效果,這個是⽐較難的
在不改變原有業務邏輯狀況下,加強橫切邏輯代碼,根本上解耦合,避免橫切邏輯代碼重複對象
「切」:指的是橫切邏輯,原有業務邏輯代碼咱們不能動,只能操做橫切邏輯代碼,因此⾯向橫切邏輯blog
「⾯」:橫切邏輯代碼每每要影響的是不少個⽅法,每⼀個⽅法都如同⼀個點,多個點構成⾯,有⼀個⾯的概念在⾥⾯繼承