第五章 面向切面程式設計 AOP 之一

2021-09-21 08:13:30 字數 1538 閱讀 5580

大家可能對物件導向的程式設計已經很熟悉了,目前物件導向的技術已經很流行。其得到了很多開發者的認同。比起以前的面向過程,簡直是一種質的飛躍。既然有物件導向的程式設計的模式了,為什麼還要面向切面的思想呢?

物件導向的程式設計主要注重核心業務,而面向切面程式設計主要關注一些不是核心的業務,但又是必須的輔助功能,比如乙個完整的系統中,記錄平時系統執行時丟擲的異常,需要我們去記錄,以便我們對系統盡快的修復。這就是我們常用的日誌。如果對一些要求比較重要的資料操作,事務是不可少的,如金融系統,這樣的資料很重要,每步操作都很重要,我們就應該用到事務處理。這就是我們常用的事務處理。可根據你的系統資料的重要性,有選擇的應用。還用乙個常用的就是安全驗證了,它也是常用的,對於不同的頁面,訪問的身份也不一樣。這就是我們常用的身份驗證。對於我們系統部分頁面或模組的訪問量比較大的地方,我們可以使用快取的機制來對付這些訪問比較頻繁的頁面,以彌補效能上的不住,保證效能不受影響,這就要用到快取機制了。以上這些不是針對特定那個業務模組的,可能針對所有的模組。它們只是一些附加的功能,相對模組的主功能而言。如果在每個模組中都夾雜著這些不是核心業務的**,看起來與核心業務有點關係,但這樣處理,會對以後的維護比較頭疼。同時也違背了物件導向的一條原則,自己對自己負責。本不屬於這個方法的業務也放在了其中。這樣的**不僅難維護,重用性也不好,耦合度也比較大。內聚性也比較低。這樣的**眼前可能不會有什麼麻煩,但給後期的維護人員帶來了麻煩。

面向方面的程式設計主要是輔助核心業務的,它並不是核心業務,但它又是不可缺少的。我們可以這樣理解它與物件導向思想的聯合使用。其實面向方面程式設計就是把那些夾雜在核心業務方法裡面的**抽取出來並模組化,把它們單獨看成乙個模組功能.來與核心業務共同完成比較完善的功能.

面向方面程式設計( aspect-oriented programming,aop)很早就出現了,它與spring的ioc結合使用,更加體現了aop的強大功能所在.在講它與spring結合使用之前先說幾個難聽,難懂的概念.它為什麼不命名一些容易理解的概念了,因為aop很早就有人對它們命名了, 所以spring中講的aop也不例外.在jboss,aspectj...中都有aop這個概念.概念都一樣的.看你怎樣理解和運用了.我們簡單的講一下常用的幾個概念.

第乙個: 切面(aspect),這是中文的翻譯,你可以把它翻譯成方面,一部分...關於它的翻譯太多,我們不關注這些,我們知道理解它是核心功能就ok了.切面簡單的理解就是把那些不是核心業務應該處理的**提取出來,進行封裝成模組化.來處理那些附加的功能**.(如日誌,事務,安全驗證)我們把這個模組的作用理解為乙個切面,告訴我們它是乙個功能模組.我們可以把它看成乙個切面.說白了就是我們寫乙個類,在這個類中寫一些處理在核心業務中起到同樣效果的方法.這樣大家應該明白了吧.專業的概念就是那麼難理解.

第二個:連線點(joinpoint),簡單的理解就是在切面模組中定義的方法.就是上面定義類中的方法.

第三個:切入點(pointcut).就是連線點的集合,就是一組方法的集合了.

第四個:通知(advice).簡單的理解就是告訴乙個方法什麼時間觸發執行.把它看作乙個條件判斷.判斷這個方法何時執行.

以下幾個就比較理解了,目標物件就是要處理的核心業務了.**就更容易理解了,讓乙個**去完成這個任務.

今天先簡單的寫到這,以後在寫. 

第五章 面向切面程式設計 AOP 之二

上一次在第五章中簡單的介紹了一下 aop 中幾個常用的功能,現在我想通過實際的例子來說明它強大的功能,這些例子是專案中實際用到的,而不是一些沒有使用價值的例子。我會介紹它在乙個完整的系統中用到的地方,有日誌處理,異常處理,事物處理,身份驗證 許可權控制 快取機制 二級快取 這應該是aop最拿手的了。...

第五章 面向切面程式設計 AOP 之二

上一次在第五章中簡單的介紹了一下 aop中幾個常用的功能,現在我想通過實際的例子來說明它強大的功能,這些例子是專案中實際用到的,而不是一些沒有使用價值的例子。我會介紹它在乙個完整的系統中用到的地方,有日誌處理,異常處理,事物處理,身份驗證 許可權控制 快取機制 二級快取 這應該是aop最拿手的了。我...

第五章 面向方面程式設計

面向方面程式設計,又稱面向切面程式設計 aspect oriented programming 英文縮寫 aop,可以說是 oop object oriented programming 物件導向程式設計的補充和完善。oop 引入封裝,繼承,多型性等概念來建立一種物件層次結構,這種物件層次結構通俗的...