AOP/OOP區(qū)別

區(qū)分

AOP、OOP在字面上雖然非常類似,但卻是面向不同領(lǐng)域的兩種設(shè)計思想。OOP(面向?qū)ο缶幊?/a>)針對業(yè)務(wù)處理過程的實體及其屬性和行為進行抽象封裝,以獲得更加清晰高效的邏輯單元劃分。

而AOP則是針對業(yè)務(wù)處理過程中的切面進行提取,它所面對的是處理過程中的某個步驟或階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果。這兩種設(shè)計思想在目標(biāo)上有著本質(zhì)的差異。

上面的陳述可能過于理論化,舉個簡單的例子,對于“雇員”這樣一個業(yè)務(wù)實體進行封裝,自然是OOP/OOD的任務(wù),我們可以為其建立一個“Employee”類,并將“雇員”相關(guān)的屬性和行為封裝其中。而用AOP設(shè)計思想對“雇員”進行封裝將無從談起。

同樣,對于“權(quán)限檢查”這一動作片斷進行劃分,則是AOP的目標(biāo)領(lǐng)域。而通過OOD/OOP對一個動作進行封裝,則有點不倫不類。

換而言之,OOD/OOP面向名詞領(lǐng)域,AOP面向動詞領(lǐng)域。

關(guān)系

很多人在初次接觸AOP的時候可能會說,AOP 能做到的,一個定義良好的 OOP 的接口也一樣能夠做到,我想這個觀點是值得商榷的。AOP和定義良好的 OOP 的接口可以說都是用來解決并且實現(xiàn)需求中的橫切問題的方法。但是對于 OOP 中的接口來說,它仍然需要我們在相應(yīng)的模塊中去調(diào)用該接口中相關(guān)的方法,這是 OOP 所無法避免的,并且一旦接口不得不進行修改的時候,所有事情會變得一團糟;AOP 則不會這樣,你只需要修改相應(yīng)的 Aspect,再重新編織(weave)即可。 當(dāng)然,AOP 也絕對不會代替 OOP。核心的需求仍然會由 OOP 來加以實現(xiàn),而 AOP 將會和 OOP 整合起來,以此之長,補彼之短。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容