什麼是AOP

 面向切面編程(也叫面向方面):Aspect Oriented Programming(AOP),是目前軟件開發中的一個熱點,也是Spring框架中的一個重要內容。利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發的效率。
  AOP是OOP的延續,是(Aspect Oriented Programming)的縮寫,意思是面向切面(方面)編程。
  主要的功能是:日誌記錄,性能統計,安全控制,事務處理,異常處理等等。
  主要的意圖是:將日誌記錄,性能統計,安全控制,事務處理,異常處理等代碼從業務邏輯代碼中劃分出來,通過對這些行爲的分離,我們希望可以將它們獨立到非指導業務邏輯的方法中,進而改 變這些行爲的時候不影響業務邏輯的代碼。
  可以通過預編譯方式和運行期動態代理實現在不修改源代碼的情況下給程序動態統一添加功能的一種技術。AOP實際是GoF設計模式的延續,設計模式孜孜不倦追求的是調用者和被調用者之間的解耦,AOP可以說也是這種目標的一種實現。
  在Spring中提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們並不負責(甚至是意識)其它的系統級關注點,例如日誌或事務支持。
  Aspect Oriented Programming(AOP)是近來較爲熱門的一個話題。AOP,國內
  大致譯作“面向方面編程”。
  “面向方面編程”,這樣的名字並不是非常容易理解,且容易產生一些誤導。筆者不止
  一次聽到類似“OOP/OOD11即將落伍,AOP是新一代軟件開發方式”這樣的發言。顯然,
  發言者並沒有理解AOP的含義。
  Aspect,沒錯,的確是“方面”的意思。不過,華語傳統語義中的“方面”,大多數情
  況下指的是一件事情的不同維度、或者說不同角度上的特性,比如我們常說:“這件事情要
  從幾個方面來看待”,往往意思是:需要從不同的角度來看待同一個事物。這裏的“方面”,
  指的是事務的外在特性在不同觀察角度下的體現。
  而在AOP中,Aspect的含義,可能更多的理解爲“切面”比較合適。所以筆者更傾向
  於“面向切面編程”的譯法。
  另外需要提及的是,AOP、OOP在字面上雖然非常類似,但卻是面向不同領域的兩種
  設計思想。OOP(面向對象編程)針對業務處理過程的實體及其屬性和行爲進行抽象封裝,
  以獲得更加清晰高效的邏輯單元劃分。
  而AOP則是針對業務處理過程中的切面進行提取,它所面對的是處理過程中的某個步
  驟或階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果。這兩種設計思想在目標上有
  着本質的差異。
  上面的陳述可能過於理論化,舉個簡單的例子,對於“僱員”這樣一個業務實體進行封
  裝,自然是OOP/OOD的任務,我們可以爲其建立一個“Employee”類,並將“僱員”相
  關的屬性和行爲封裝其中。而用AOP設計思想對“僱員”進行封裝將無從談起。
  同樣,對於“權限檢查”這一動作片斷進行劃分,則是AOP的目標領域。而通過OOD/OOP
  對一個動作進行封裝,則有點不倫不類。

  換而言之,OOD/OOP面向名詞領域,AOP面向動詞領域。

==========================================================

http://baike.baidu.com/view/73626.htm

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