• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    AOP及其Java實現機制

    發布: 2008-5-28 10:20 | 作者: 不詳 | 來源: blog.csdn.net | 查看: 108次 | 進入軟件測試論壇討論

    領測軟件測試網

    面向方面編程(Aspect-OrientedProgramming,AOP)就是這樣一種區別于傳統編程技術的新的編程思想,最初由GregorKiczales在施樂的PaloAlto研究中心領導的一個研究小組于1997年提出。AOP正是基于方面與模塊形成橫切,造成代碼糾結這一觀察提出的,并提出了一種新的編程思路來解決這一問題。之后,AOP經由幾個不同小組的努力在各自的方向上得到了發展,到目前為止,AOP仍處于發展階段。

    2.1AOP的基本思想

    如前所述,造成代碼糾結的原因在于傳統編程技術中,軟件系統中非業務功能實現的代碼無法模塊化,散布在實現業務功能的代碼中造成的。這里,我們引入關注點(Concern)的概念,關注點就是軟件系統中需要解決的問題。軟件系統的業務功能組成了核心關注點(CoreConcerns),也就是軟件系統要解決的問題,而諸如日志記錄,事物處理等關注點就形成了橫切關注點(CrosscuttingConcerns),因為,這些關注點散布在核心關注點中,相互形成了橫切的關系,橫切關注點也就是前面提到的方面這一概念。
    有鑒于此,AOP提出的解決方法是對這兩種相互橫切的關注點分別進行編碼,使用傳統的編程語言對核心關注點編程,使用面向方面的編程語言對橫切關注點,也就是方面進行編程。然后使用一種機制將這兩種代碼自動混合起來,形成最終的代碼。在這里,面向方面的編程語言可以是已有編程語言的擴展(AspectJ,AspectC++,AspectC,AspectC#,Apostle等),或是一種新的語言,設計用于編寫方面的代碼(Caesar,D2AL,JasCo等)。而將兩種代碼混合的機制稱為織入(Weaving),實現這一機制的工具稱為織入器(Weaver)。因此,對方面單獨編碼,并通過適當的織入機制使兩種代碼混合,構成了AOP解決代碼糾結問題的基石。

    2.2織入機制

    如前所述,織入是實現AOP的一個重要機制,織入的實現機制有多種,基本上可以分為兩類,靜態織入與動態織入。靜態織入是指在業務功能代碼中的適當位置,比如某段代碼執行前,或執行后,將方面中的編碼插入,從而形成混合的編碼。方面中的編碼在程序運行前,已被內聯至業務功能代碼中,因此,代碼可以被優化,從而使織入產生的開銷最小化,最終產生的混合代碼,其執行速度接近為使用AOP方式編寫的代碼。但是,靜態織入無法做到在程序運行時,根據運行上下文動態的決定插入的方面代碼,動態織入則可以做到這一點。動態織入可以在程序運行時,根據上下文決定調用的方面,它們的先后順序,增加或刪除一個方面等。
    而根據織入的時間,又可以分為三類,編譯時,載入時,運行時。編譯時織入可以在編譯前進行預處理,將兩種代碼自動混合,將方面中的代碼自動插入到功能模塊代碼的合適位置處,也可在編譯后,對編譯后的代碼進行操作。載入時織入是在代碼載入時,實現代碼的織入。運行時織入則在運行時,根據對方法的調用執行適當的方面代碼以實現織入。
    以AOP的Java實現為例,包括使用反射(Reflection),基于動態代理(DynamicProxy)或其它機制的攔截框架,基于元數據(Metadata)的操作,以及類載入時對字節碼的操作等。隨著AOP應用的進一步推廣,相信會有更多新的織入方式出現。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>