Spring AOP 剖析(1)

軟件開發的目的,最終是爲了解決各種需求,包括業務需求和系統需求。使用面向對象的方法,可以對業務需求等普通關注點進行很好的抽象和封裝,並且使之模塊化。

 

但是對於系統需求一類的關注點來說,情況卻有所不同。

 

 

 

 

1. 對於業務的需求而言,需求與其具體實現之間的關係基本上是一對一的。可以在系統中的某一個確定的點找到針對這種需求的實現,無論從開發還是維護的角度,都比較方便。

 


一個關於貸款業務的系統功能模塊劃分示意圖

 


2. 對於系統需求,比如:爲了對系統進行監控,需要爲所有這些業務需求的實現添加日誌記錄功能,或者業務方法的執行需要一定的權限限制。要將這些需求以面向對象的方式實現並集成到整個系統中去,可就不是一個需求對應一個實現那麼簡單了。系統中的每個業務對象都需要加入日誌記錄,加入相應的安全檢查,那麼這些需求的實現代碼就會遍及所有的業務對象。

 

系統中普通的業務關注點,OOP可以很好地對其進行分解並使之模塊化,但卻無法更好地避免類似於系統需求的實現在系統中各處散落的問題。爲了解決這個問題,於是AOP應運而生。

 

 

日誌記錄,安全檢查,事務管理等系統需求就像一把刀橫切在組織良好的各個業務功能模塊之上



 這些系統需求是系統中的橫切關注點,使用傳統方法,無法更好的以模塊化的方式,對這些橫切關注點進行組織和實現。

所以 AOP 引入了 Aspect 的概念,用來以模塊化的形式對系統中的橫切關注點進行封裝。

 

Aspect 對於 AOP ,就相當於 Class 對於 OOP。 AOP 僅是對 OOP 方法的一種補足,當把以 Class 形式模塊化的業務需求和以 Aspect 形式模塊化的系統需求拼裝到一起的時候,整個系統就算完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章