1. 程式人生 > >【AOP系列】(二)—AOP相關概念

【AOP系列】(二)—AOP相關概念

前提

  在閱讀本篇博文之前,請先閱讀上篇博文【AOP系列】(一)—靜態代理VS動態代理(Java) ,因為下文中在解釋一些概念時,會用到上篇博文中的例子。

思維導圖

這裡寫圖片描述

概念解釋

橫切性關注點(Cross Cutting Concern):獨立服務,如系統日誌。如果不是獨立服務(與業務耦合)就不能橫切了。通常這種獨立服務需要遍佈系統各個角落,遍佈在業務流程之中。

切面(Aspect):日誌服務會單獨寫到一個類中,如LogHandler,這個類叫做切面。基於AOP的程式設計關鍵是能找到橫切性的關注點,形成切面。

模組化:把日誌這種服務單獨抽到一個類中,這一過程稱作模組化。

Advice:在LogHandler這個類中對日誌服務做的具體實現(也就是對橫切性關注點的具體實現):可以是一句程式碼(system.out.println),也可是一個方法。Advice可以分類:BeforeAdvice,AfterAdvice,區別在於Advice在目標方法之前呼叫還是之後呼叫,Throw Advice 表示當目標發生異常時呼叫Advice。

PointCut(看做一種約束):指Advice會應用在目標物件的哪些目標方法中,如只應用再add,delete,modify方法上,不應用在select方法上,實際當中需要用表示式進行限制。

Target Object

:目標物件。

JoinPoint:在目標物件中,將會應用Advice的方法或屬性(AspectJ支援將屬性作為JoinPoint),這些叫做連線點。

織入(Weave):即Advice應用在JoinPoint的過程,這個過程有個專業術語,不叫應用,叫織入:

Proxy:(可有可無),動態織入建立代理效率慢,有些是在編譯時靜態織入,不會產生代理類。

Introduction:動態為某個類增加或減少方法(這個暫時不理解,先寫到這裡)。

這裡寫圖片描述

總結

  瞭解這些概念,不是為了讓大家記住,而是更好地去理解AOP思想。雖然AOP的全稱是Aspect Oriented Programming,但是經我一總結,也可以解釋為A

spect,Object(Target Object),Proxy。也是蠻有意思的啊!