怎么說呢零抬,不知不覺兩年了灾螃,該干點啥了题翻,現(xiàn)在這里記錄一些學(xué)習(xí)的心得,與大家一起分享一下睦焕。
首先什么是AOP藐握,都是些老生常談的話題靴拱,這里就用一句話來概括AOP是Aspect Oriented Programming的縮寫垃喊,中譯文為面向切向編程。
既然是面向切面編程袜炕,首先我們該怎么理解Android里面的切面本谜,下面我來為大家一一詳解。本人也是參悟各大神博客偎窘,所以有重疊之處請多多包含乌助。
我先介紹下Android里面AOP涉及到的四大概念:
1、pointcut :你所要切入面的類型(比如你要切入的是方法還是構(gòu)造方法等等)
2陌知、advice: 這里最重要的基礎(chǔ)參數(shù):Before他托、Around、After 三個參宿就和字面解釋一樣表示三個階段仆葡。
3赏参、joinpoint: 字面理解就是連接點,表示代碼注入目標(biāo)特定的點和入口。
4把篓、Aspect: 切面纫溃,pointcut和advice指定了一個具體切面。
5韧掩、waveJoin: 編織紊浩,將上面定義好的Aspect切面切入各個模塊。
我剛剛開始看的時候一臉霧水疗锐、什么切面坊谁、什么玩意;大家不要急滑臊,我來炒菜獻給大家:現(xiàn)在有一口鍋呜袁、一堆芹菜。(可惜的是做了兩年開發(fā)的我简珠,近期才醒悟一個王道:做開發(fā)的一定要懶)阶界。好了,現(xiàn)在基于我很懶但是肚子餓了又必須把菜做了的前提下~let me think 聋庵。 讓我們用切面思想來干他膘融。
我們要做的就是定義下要切的范圍是葉子,然后把葉子統(tǒng)統(tǒng)都切下來扔掉燒芹菜莖吃祭玉。
第一步:定義范圍:葉子(對應(yīng)Android里面的方法)
接下來我們定義好芹菜的葉子(好比Android 中的方法類型)作為pointcut的切入類型
然后我們定義切入的三個時機advice (Before氧映、Around、After)分別結(jié)合之前定義好的pointcut作為一個切入面Aspect如下圖脱货,對沒錯岛都,就是你看到的那樣簡單,只需要如此定義振峻。
接下來使用他來把一堆的芹菜都洗菜葉臼疫、切菜葉、放鍋里扣孟,我只需要使用一步如下:
跑起來你會發(fā)現(xiàn)烫堤,我靠,就這么簡單:
全部都會自動完成凤价,我們不需要在每個類里面都寫上繁重的重復(fù)代碼鸽斟,我們不需要重復(fù)操作來切一顆顆芹菜,對不對利诺,要做好一道菜富蓄,首先我們得懶起來。O(∩_∩)O哈哈~
這里只是簡單闡述下AOP的思想慢逾、可以幫我們做的一些事立倍、接下來我會繼續(xù)撰寫完整的一套方法躏吊、如何使用,畢竟讓用戶run起來才是王道帐萎,其他都是扯皮O(∩_∩)O~