怎么說呢,不知不覺兩年了,該干點啥了,現在這里記錄一些學習的心得,與大家一起分享一下。
首先什么是AOP,都是些老生常談的話題,這里就用一句話來概括AOP是Aspect Oriented Programming的縮寫,中譯文為面向切向編程。
既然是面向切面編程,首先我們該怎么理解Android里面的切面,下面我來為大家一一詳解。本人也是參悟各大神博客,所以有重疊之處請多多包含。
我先介紹下Android里面AOP涉及到的四大概念:
1、pointcut :你所要切入面的類型(比如你要切入的是方法還是構造方法等等)
2、advice: 這里最重要的基礎參數:Before、Around、After 三個參宿就和字面解釋一樣表示三個階段。
3、joinpoint: 字面理解就是連接點,表示代碼注入目標特定的點和入口。
4、Aspect: 切面,pointcut和advice指定了一個具體切面。
5、waveJoin: 編織,將上面定義好的Aspect切面切入各個模塊。
我剛剛開始看的時候一臉霧水、什么切面、什么玩意;大家不要急,我來炒菜獻給大家:現在有一口鍋、一堆芹菜。(可惜的是做了兩年開發的我,近期才醒悟一個王道:做開發的一定要懶)。好了,現在基于我很懶但是肚子餓了又必須把菜做了的前提下~let me think 。 讓我們用切面思想來干他。
我們要做的就是定義下要切的范圍是葉子,然后把葉子統統都切下來扔掉燒芹菜莖吃。
第一步:定義范圍:葉子(對應Android里面的方法)
接下來我們定義好芹菜的葉子(好比Android 中的方法類型)作為pointcut的切入類型
然后我們定義切入的三個時機advice (Before、Around、After)分別結合之前定義好的pointcut作為一個切入面Aspect如下圖,對沒錯,就是你看到的那樣簡單,只需要如此定義。
接下來使用他來把一堆的芹菜都洗菜葉、切菜葉、放鍋里,我只需要使用一步如下:
跑起來你會發現,我靠,就這么簡單:
全部都會自動完成,我們不需要在每個類里面都寫上繁重的重復代碼,我們不需要重復操作來切一顆顆芹菜,對不對,要做好一道菜,首先我們得懶起來。O(∩_∩)O哈哈~
這里只是簡單闡述下AOP的思想、可以幫我們做的一些事、接下來我會繼續撰寫完整的一套方法、如何使用,畢竟讓用戶run起來才是王道,其他都是扯皮O(∩_∩)O~