面向方面編程 (AOP) 是施樂公司帕洛阿爾托研究中心 (Xerox PARC) 在20世紀 90 年代發明的一種編程范式,它使開發人員可以更好地將本不該彼此糾纏在一起的任務(例如數學運算和異常處理)分離開來。 AOP 方法有很多優點。首先,由于操作更為簡潔,所以改進了性能。其次,它使程序員可以花費更少的時間重寫相同的代碼?傊,AOP 能夠為不同過程提供更好的封裝性,提高未來的互操作性。
是什么使軟件工程師都希望自己能成為硬件工程師呢?自從函數發明以來,程序員花費了大量時間(及其老板的大多數資金)試圖設計這樣的系統:它們不過是一些組合模型,由其他人創建的部件構成,布置成獨特的形狀,再覆蓋上一些悅目的顏色。函數、模板、類、組件等等一切,都是軟件工程師自己創建“軟件集成電路”(模擬硬件設計師的電子器件)的種種嘗試。
我把這些都歸咎于 Lego(樂高玩具)。把兩個玩具塊(即組件)拼起時發出的悅耳的咔噠聲很讓人上癮,會促使許多程序員發明一種又一種新的封裝和重用的新機制。這方面最新的進展就稱為面向方面編程 (AOP) 。 AOP 的核心是安排(一個摞在另一個之上)組件的一種方式,可以獲得其他種類基于組件的開發方法無法得到的重用級別。這種安排是在客戶端和對象之間的調用堆棧中進行的,其結果是為對象創建了一種特定的環境。這種環境正是 AOP 程序員主要追求的東西。
AOP是什么?
AOP是OOP的延續,是Aspect Oriented Programming的縮寫,意思是面向方面編程。AOP實際是GoF設計模式的延續,設計模式孜孜不倦追求的是調用者和被調用者之間的解耦,AOP可以說也是這種目標的一種實現。
舉例:假設有在一個應用系統中,有一個共享的數據必須被并發同時訪問,首先,將這個數據封裝在數據對象中,稱為Data Class,同時,將有多個訪問類,專門用于在同一時刻訪問這同一個數據對象。