最近在看《spring原始碼深度解析》這本書,裡面有一章專門來介紹aop,鑑於以前也看過用過aop的東西,但是這些東西都比較零碎,沒有很深入很系統的去了解,在這裡我簡單總結一下。
一般情況下,我們都對oop比較熟悉,物件導向程式設計在我們日常生活中簡單都能遇得到,更容易理解,但是aop這個面向切面程式設計,咋一看是懵逼的。aop是aspect oriented programming的簡稱,從英文本面上可以看出來是aspect,一般情況下我們翻譯為方面,切面,所謂切面,方面字面理解就是不是乙個整體,而是乙個部分。好比一張紙,你可以把這張紙給剪開成好多小紙條。這些剪紙的地方就是切面。你也可以這樣想,這張紙上寫滿了**,當我把這張紙給按照如下所示行給剪掉的時候,那麼就會分離出如下這種:(>>>>>>>>>>>>>>>>>>>>>>>:代表一種切口,切面)
public void main(string args)
即使剪下了,但是我們可以清楚的看到,我們並沒有改變了**的業務邏輯,這樣我們就可以在這些切口這裡做文章了,當我們需要統計某段業務**的網路日誌,某段業務**的耗時,增加安全或者異常的功能的時候,此時利用aop來實現可以減少對業務邏輯**的汙染的同時也把功能給實現了。比如下面**:
public inte***ce testaopin
public class testaopimpl implements testaopin
}當為了增加一些功能的時候,為了防止汙染業務邏輯**,那麼我們可以在剪下口進行修改,諸如:
public class testaopimpl implements testaopin
}總結:oop是一種縱向的程式設計邏輯,比如繼承和實現,一種類似從上而下的縱向關係,而aop面向切面程式設計是一種橫向切面的程式設計邏輯。剪下掉,然後增加相關的增量功能服務**,這樣即不會影響存量**,又實現了增量功能。
AOP面向切面程式設計(個人理解)
面向切面程式設計的目標就是分離關注點。什麼是關注點呢,就是你要做的事,就是關注點。假如你是個公子哥,沒啥人生目標,天天就是衣來伸手,飯來張口,整天只知道玩一件事!那麼,每天你一睜眼,就光想著吃完飯就去玩 你必須要做的事 但是在玩之前,你還需要穿衣服 穿鞋子 疊好被子 做飯等等等等事情,這些事情就是你...
簡單理解AOP(面向切面程式設計)
aop為aspect oriented programming的縮寫,意為 面向切面程式設計,通過預編譯方式和執行期動態 實現程式功能的統一維護的一種技術。aop與oop是面向不同領域的兩種設計思想。oop 物件導向程式設計 針對業務處理過程的實體及其屬性和行為進行抽象封裝,以獲得更加清晰高效的邏輯...
簡單理解AOP(面向切面程式設計)
aop為aspect oriented programming的縮寫,意為 面向切面程式設計,通過預編譯方式和執行期動態 實現程式功能的統一維護的一種技術。aop與oop是面向不同領域的兩種設計思想。oop 物件導向程式設計 針對業務處理過程的實體及其屬性和行為進行抽象封裝,以獲得更加清晰高效的邏輯...