AOP的概念已經(jīng)熱了很久了,我一直不太關(guān)注,也不太理解這個面向方面編程中的方面是什么意思。由于AOP和OOP僅一字之差,所以在網(wǎng)上看到大量的文章來拿這兩個作對比,看完后還是稀里糊涂的。
這段時間開始拿Spring做新產(chǎn)品,于是開始仔細(xì)研究AOP。這才發(fā)現(xiàn)AOP和OOP講的根本不是同一類的東西?!?/p>
AOP中的方面是指問題的一個方面,相對于問題的全部來說的。AOP就是針對問題的一個方面編程。它把一個問題(或者說是需求)從程序級別上拆分成幾個方面,讓程序員在編程時只關(guān)注自己應(yīng)當(dāng)關(guān)注的方面,而完全忽略其它的方面。最后由AOP框架來組合不同程序員(或者說是不同模塊)的程序。
從這點上來說,AOP的確對模塊化開發(fā)有很大的裨益。
一、完全消除了編碼時模塊之間的依賴,解決了團(tuán)隊開發(fā)中一龍攔住千江水的瓶頸問題。當(dāng)然,做到這一點除了AOP外,還必須做到面向接口編程。
二、可以在任意階段,向已有功能模塊中填加新功能,且不侵入原有功能。