轉(zhuǎn)載請標明出處http://www.cnblogs.com/yxx123/p/6665736.html
參考:深入理解Android之AOP
AOP雖然是方法論,但就好像OOP中的Java一樣,一些先行者也開發(fā)了一套語言來支持AOP。目前用得比較火的就是AspectJ了,它是一種幾乎和Java完全一樣的語言,而且完全兼容Java(AspectJ應該就是一種擴展Java,但它不是像Groovy[1]那樣的拓展。)。當然,除了使用AspectJ特殊的語言外,AspectJ還支持原生的Java,只要加上對應的AspectJ注解就好。所以,使用AspectJ有兩種方法:
完全使用AspectJ的語言。這語言一點也不難,和Java幾乎一樣,也能在AspectJ中調(diào)用Java的任何類庫。AspectJ只是多了一些關鍵詞罷了。
或者使用純Java語言開發(fā),然后使用AspectJ注解,簡稱*@AspectJ*。
AspectJ的配置可以參考另一篇文章Android中使用AspectJ
Join Points介紹
Join Points是AspectJ中的一個關鍵概念。Join Points可以看作是程序運行時的一個執(zhí)行點,比如:一個函數(shù)的調(diào)用可以看作是個Join Points,如Log.e()這個函數(shù),e()可以看作是個Join Points,而調(diào)運e()的函數(shù)也可以認為是一個Join Points;設置一個變量,或者讀取一個變量也可以是個Join Points;for循環(huán)也可以看作是Join Points。
理論上說,一個程序中很多地方都可以被看做是Join Points,但是AspectJ中,只有下面所示的幾種執(zhí)行點被認為是Join Points:
Join Points | 說明 | 示例 |
---|---|---|
method call | 函數(shù)調(diào)用 |
延伸閱讀
我想了解如何學習 |