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