麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

面向方面編程慨述和JBoss

2019-11-18 14:08:11
字體:
來源:轉載
供稿:網友

  概述

  面向方面的程序設計(AOP)是一個激動人心的新規范,和已經有十幾年歷史的面向對象的程序設計(OOP)在軟件開發上有相同的作用。 AOP和OOP不是相互競爭的技術,實際上它們相輔相成的十分融洽。 面向對象的程序設計對于建模常見的對象等級體系非常有用。 它的不足之處在于處理跨多個非關聯對象模型的常見情況;這時就有AOP的用武之地了。 AOP答應你跨關聯,使用單獨的、彼此之間非常不同的對象模型。 它答應你層次化--而不是嵌入--函數,以便代碼更易讀、更便于維護。 我們喜歡把面向對象的程序設計想象成為自頂向下的軟件開發,而面向方面的程序設計則是自左向右;它們是完全正交的技術,彼此之間相輔相成的十分融洽。

  面向對象的程序設計的手段是繼續、封裝和多態性,而面向方面的程序設計的組件是通知/監聽器(advice/interceptor)、引入(introdUCtion)、元數據(metadata)和切入點(pointcut) 。 讓我們看看這些定義。

  通知/監聽器(advice/interceptor)

  一個通知是被某一事件觸發的程序邏輯。 它是可以被插入一個方法調用者和實際的方法之間的行為。 通知實際上是面向方面的程序設計的要害。這些構造答應你定義橫切(cross-cutting)行為。通知答應你透明地應用象記錄和度量這樣的事到現有的對象模型中。

  在JBoss AOP中,我們使用監聽器實現通知。你可以定義監聽器監聽方法調用、構造器調用和字段訪問。稍后,我們將研究如何應用這些監聽器到一個現有的對象模型中。

  引入

  引入是一種添加方法或者字段到一個現有類的方法。它們甚至答應你改變一個現有類目前實現的接口并且引入一個混合類實現這些新接口。

  引入答應你把多繼續帶到簡單的java類中。引入的一個重要的使用實例就是你有一個想有運行時間接口的方面。你想跨不同的對象層次應用你的方面,但是你仍然想應用程序開發者能夠調用指定方面API。

Apple apple = new Apple();
LoggingAPI logging = (LoggingAPI)apple;
Apple.setLoggingLevel(VERBOSE);
  引入可以是一個把新API附加于一個現有對象模型的方法。

  元數據

  元數據是可以附屬于一個類的附加信息,或者以靜態方式或者在運行時間。當你可以動態地把元數據附上到一個對象給定的實例中的時候,它將更加有效。當你正在編寫可用于任何對象的一般的方面的時候,元數據顯得非凡重要,但是程序邏輯必須知道指定類的信息。元數據被使用的一種很類似的情況是EJB規范。在EJB xml配置描述符中,你在一個每方法的基礎上定義事務屬性。應用程序服務器知道何時何地開始、暫停或者委托一個事務,因為你已經定義Required、RequiresNew、Supports等方法。在你的EJB類和事務治理程序綁定的元數據里,是bean的XML配置文件。

  C#已經把元數據構建入語言中。XDoclet是另一個正在工作的很好的元數據的例子。假如你曾經用過XDoclet來生成EJB文件和配置描述符,你肯定知道元數據強大的功能。Java Community PRocess(JCP)達成協議,元數據被添加進JDK 1.5 (見JSR175)。直到JSR 175真正成為一種規范,一個好的AOP框架才能提供一個機制,聲明在運行時間有效的類級元數據。

  切入點

  假如監聽器,引入和元數據是面向方面的程序設計的特性,那么切入點就是把這些特性聯系起來的紐帶。切入點告訴面向方面的程序設計框架,哪個監聽器將和哪個類捆綁在一起,哪些元數據將用于哪些類,或者引入將被導入到哪些類中。 切入點定義能夠用于你的應用程序的類的各種面向方面的程序設計特性。
工作中的面向方面的程序設計 例子1、使用監聽器

  JBoss 4.0帶有一個面向方面的程序設計框架。這個框架和JBoss應用程序服務器緊密地整合,但是你還可以在你自己的應用程序上單獨運行它。你只有看到它如何工作,才能真正明白一個概念,所以讓我們使用JBoss AOP中的例子來說明所有這些東西是如何合作的。在本文剩余的部分,我們將使用AOP構建一個簡單的追蹤框架。

  定義一個監聽器

  首先要做的是實現我們的小跟蹤框架,來定義將做實際工作的監聽器。 JBoss AOP中的所有的監聽器必須實現org.jboss.aop.Interceptor接口。

public interface Interceptor
{
public String getName();
public InvocationResponse invoke(Invocation invocation) throws Throwable;
}
  JBoss AOP中被監聽的所有字段、構造器和方法被轉化為一個普通的Invocation調用。方法參數被裝入一個Invocation對象,然后一個方法、字段訪問或者構造器的返回值被裝入一個InvocationResponse對象。Invocation對象還驅動監聽器鏈。為了解釋清楚,我們來看看在一個例程中所有這些對象如何使用。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩毛片网站 | 国产精品片一区二区三区 | 欧美aⅴ视频| 末成年女av片一区二区 | 久久久久久久久久性 | 精品中文字幕久久久久四十五十骆 | 欧美一级黄色免费看 | 美女视频大全网站免费 | 欧美一级棒 | 法国极品成人h版 | 精品国产一区二区三区在线观看 | 国产1区2区在线 | 日韩精品羞羞答答 | 亚洲精品aaaaa| 久久精品一二三区 | 九九精品在线播放 | 精品亚洲国产视频 | 久久婷婷一区二区三区 | 久久久久久久久久亚洲 | 久草在线视频新 | 高清做爰免费无遮网站挡 | 爱视频福利 | 国产精品欧美久久久久一区二区 | 国产亚洲精品综合一区91 | 午夜天堂在线 | 国产精品高潮99久久久久久久 | 黄色网址你懂的 | 极色品影院 | 久久男人的天堂 | 免费观看视频网站 | 国产成人精品网站 | 一级毛片免费在线 | 毛片118极品美女写真 | 亚洲一区二区免费 | 国产一区国产二区在线观看 | 久久精品亚洲欧美日韩精品中文字幕 | 免费的性爱视频 | 久久91精品国产91久久yfo | 免费a级网站 | 欧美三日本三级少妇三级99观看视频 | 欧美性生活视频免费看 |