怎么說呢,不知不覺兩年了,該干點(diǎn)啥了,現(xiàn)在這里記錄一些學(xué)習(xí)的心得,與大家一起分享一下。
首先什么是AOP,都是些老生常談的話題,這里就用一句話來概括AOP是Aspect Oriented Programming的縮寫,中譯文為面向切向編程。
既然是面向切面編程,首先我們該怎么理解Android里面的切面,下面我來為大家一一詳解。本人也是參悟各大神博客,所以有重疊之處請多多包含。
我先介紹下Android里面AOP涉及到的四大概念:
1、pointcut :你所要切入面的類型(比如你要切入的是方法還是構(gòu)造方法等等)
2、advice: 這里最重要的基礎(chǔ)參數(shù):Before、Around、After 三個(gè)參宿就和字面解釋一樣表示三個(gè)階段。
3、joinpoint: 字面理解就是連接點(diǎn),表示代碼注入目標(biāo)特定的點(diǎn)和入口。
4、Aspect: 切面,pointcut和advice指定了一個(gè)具體切面。
5、waveJoin: 編織,將上面定義好的Aspect切面切入各個(gè)模塊。
我剛剛開始看的時(shí)候一臉霧水、什么切面、什么玩意;大家不要急,我來炒菜獻(xiàn)給大家:現(xiàn)在有一口鍋、一堆芹菜。(可惜的是做了兩年開發(fā)的我,近期才醒悟一個(gè)王道:做開發(fā)的一定要懶)。好了,現(xiàn)在基于我很懶但是肚子餓了又必須把菜做了的前提下~let me think 。 讓我們用切面思想來干他。
我們要做的就是定義下要切的范圍是葉子,然后把葉子統(tǒng)統(tǒng)都切下來扔掉燒芹菜莖吃。
第一步:定義范圍:葉子(對應(yīng)Android里面的方法)

接下來我們定義好芹菜的葉子(好比Android 中的方法類型)作為pointcut的切入類型

然后我們定義切入的三個(gè)時(shí)機(jī)advice (Before、Around、After)分別結(jié)合之前定義好的pointcut作為一個(gè)切入面Aspect如下圖,對沒錯(cuò),就是你看到的那樣簡單,只需要如此定義。

接下來使用他來把一堆的芹菜都洗菜葉、切菜葉、放鍋里,我只需要使用一步如下:

跑起來你會發(fā)現(xiàn),我靠,就這么簡單:

全部都會自動完成,我們不需要在每個(gè)類里面都寫上繁重的重復(fù)代碼,我們不需要重復(fù)操作來切一顆顆芹菜,對不對,要做好一道菜,首先我們得懶起來。O(∩_∩)O哈哈~
這里只是簡單闡述下AOP的思想、可以幫我們做的一些事、接下來我會繼續(xù)撰寫完整的一套方法、如何使用,畢竟讓用戶run起來才是王道,其他都是扯皮O(∩_∩)O~