AOP面向方面編程

   AOP是OOP的延續,是Aspect Oriented Programming的縮寫,意思是面向方面編程。AOP帶來了新的編程革新。 使得軟件設計更加細化,代碼的編寫順序不再決定其運行順序,誕生動態組件概念,結合IOC DI模式,可以實現軟件編寫和運行的最大靈活性,自誕生以來已經成為Java領域主流模式,典型框架有Spring或AspectJ框架。

   在面向對象系統中,我們經常需要一些任務活動,如記錄,交易的安全性,緩存等,這些活動是必要的,但不是業務邏輯的一部分,被稱為"橫切關注點"。

(橫切關注==跨整個系統的常用功能)

   從業務邏輯中分離橫切關注點,為寫出一個精心設計的解耦系統邁出了一大步。讓我們關注思考如何處理橫切關注點的分離。

   繼承Inheritance

   繼承的是那些通用功能,繼承需要我們設計一個基類,如果我們要重用到多個地方可能需要修改這個基類。繼承Inheritance == 難以在后來修改(無彈性代碼)

   委托Delegation

委托是一個處理橫切關注的好辦法,委托和組合分享一個通用功能,但是我們需要在很多地方調用這個委托對象,顯得繁瑣。委托 == 繁瑣

   AOP允許我們以模塊化關注橫向點并形成對象,稱為Aspect,這樣使用Aspect能夠創建一個干凈解耦的代碼。

AOP相關概念

  1. Concerns關注 – 這是基于功能的模塊部分,有兩種類型關注:. 1. 核心關注 2. 跨切面關注(Aspect). 核心關注是有關業務邏輯,比如生成工資單,讓員工記錄,做銀行轉帳。跨切面關注是配合業務的一些活動任務,如日志 緩存等。
  2. Joinpoint連接點 – Joinpoint是在執行時的切入點,Aspect也就是跨切面關注的一些功能要加入主要業務功能的地方,一個連接點可以是一個被調用的方法。
  3. Advice建議 – 每個Aspect都有一個目標,它的任務是什么,這個任務會被切入到哪個連接點,這些都被稱為Advice. Advice能夠定義Aspect什么時候執行任務,是在核心關注也就是主要業務活動的之前 之后或者前后執行?
  4. Pointcut 切入點– 一個系統有很多連接點,但是并不是所有連接點都需要被選擇切入Aspect的,Aspect從切入點能夠獲得幫助,選擇哪個連接點介入。
  5. Aspect方面 – Advice 和 Pointcut定義了一個方面Aspect.Advice定義了Aspect的任務和什么時候執行它,而切入點Pointcut定義在哪里具體地方切入,也就是說,Aspect定義了它是什么東西 什么時候切入和在哪里切入。
  6. Target目標 – 目標是一個被切入的地方,它一般是核心關注,業務功能。
  7. Proxy代理 – 當一個advice應用到目標對象時,這時一個代理對象將被創建. AOP容器創建和管理代理對象的生命周期。
  8. Weaving織入 – Weaving是一個混合橫向方面到目標業務對象的過程,織入可以是在編譯時間,也可以在運行時間使用classload,Spring AOP缺省是在運行時間。

 

動態代理與AOP

Spring的AOP實現

AOP是什么?

AOP詳解和AspectJ

AOP與權限控制實現

探討Spring框架使用真相?

Spring專題

JdonFramework的AOP

Akka的產品化應用經驗分享

AOP專題討論

一级黄色录像影片 夫妻性生活影片 免费在线观看 一级a做爰片