面向方面編程的介紹—-基本概念(1)

來源:互聯網
上載者:User

面向方面編程的介紹----基本概念(1)

 

物件導向的編程中常用的概念是:繼承、封裝、多態。在面向方面的編程中常使用的概念是:advices/interceptors, introductions, metadata, and pointcuts。

AOP 面向方面編程的介紹----基本概念(3

面向方面的編程思路很簡單。從面向過程、函數的編程到物件導向的編程到面向介面的編程到面向組件、模組編程的發展曆史我們可以知道,編程方法學的演化是一步一步的擴大了編程考慮的“邊界”。到目前為止我們的編程世界裡的宇宙邊界是“類、介面,或者組件”,在這個邊界裡,我們認為,一個類實現一個介面,那就不能動態實現另一個介面,已有類的行為在編譯以前就基本固定,要麼是類內部定義的方法,要麼是要麼是繼承和實現介面繼承過來的方法。但是實際的編程工作中我們碰到了“跨邊界的情況”,需要多個類,介面,組件合作才能完成的工作,比如:多線程並發訪問,程式流集中控制,序列化和程式狀態保持,以及需要多個“類、介面、組件邊界”共同參於才能完成的工作。為了更好的處理多個邊界共同完成同一方面的工作,面向方面的編程出現了。這裡的方面,我們可以指:為完成同一任務而需要多個類、介面、組件一起協作工作的綜合。你可以認為方面其實就是一個更大的類,這個類主要由我們OOP中的類、介面組成,當然這些類和介面是如此的親密,以至於他們行為(方法)可以相互轉換。其實這沒什麼大不了的,介面的出現不是實現了動態改變類的行為的嗎?面向方面的編程只是做了一個延伸,把這個改變提升到了介面這個層次上。寫到這裡,我感到:耳朵清靜了,但是世界還沒有清靜,因為到實際的運用這種思路編程,還需要很長的時間,和更多工具開發商的支援。

在我以後的文章中我想統一下面的概念:
1、inter-type declarations  邊界內部型別宣告:Inter-type 聲明在AspectJ中有很多種形式,使用他來描述類之間的關係、類本身成員和結構資訊。
2、join point 連接點:連接點是在程式流程中定義的一個點。
4、crosscutting concerns  :考慮邊界交叉
5、Pointcuts 連接點集:程式運行中持有對多個連接點狀態的集合。
5、advice 通知點行為:連接點集如同一個包括多個的“結構”,本身不具有行為,其行為靠通知點行為來實現。
                     以上的名詞主要用於:AspectJ的介紹中。

Advices/Interceptors(訊息傳達/訊息攔截)

一個“傳達的訊息”是一個被特定事件觸發發的邏輯(代碼)。這個“傳達的訊息”可以被插入到一個調用者和被調用者隊列之間。可以說:傳達訊息是面向方面的編程的一個關鍵組成部份。

Introductions(成員推薦)

Introductions 是用來向已有的類增加方法和屬性的一個方法。使用成員推薦你可以把一個現有類實現的介面“介紹”到另一個新的介面中。大家知道,介面的出現就是為了把定義和實現分開,現在使用面向方面的編程,可以做到動態改變既有類的介面,太不可思議了。在java編程中使用“成員推薦”你可以做到讓一個java類實現多重繼承。也就是說,使用“成員推薦”你可以在程式啟動並執行時候來動態改變類的介面,實現不同的行為。就像孫悟空可以不斷變換自己的行為,但是這個孫悟空必須有三個毫毛(被“成員推薦”)。看下面的例子:

Apple apple        = new Apple();

LoggingAPI logging = (LoggingAPI)apple;

Apple.setLoggingLevel(VERBOSE);

使用“成員推薦”:Apple 可以動態擁有log的功能了。

Metadata(中繼資料)

中繼資料是用來描述類本身的一些附加資訊和其描述類捆綁在一起,可以靜態或者再啟動並執行時刻獲得這些類的描述資訊。例子參見我的另一片文章(使用反射機制實現動態原廠模式)。EJB中就使用了大量的Metadata。

Pointcuts

如果說:interceptors, introductions, and metadata 是面向方面編程的特點的話,那麼 pointcuts are 就是串連他們在一起的“膠水”。 Pointcuts 是運行在AOP架構,比如:告訴架構如何確認訊息傳達、中繼資料是如何在類中定義的、那些類、介面被“成員推薦”了等等。

    後面我們說說:Jboss 4.0中的AOP架構。

http://www.onjava.com/pub/a/onjava/2003/05/28/aop_jboss.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.