天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

軟件架構師之AOP

  如果要做為一名合格的軟件架構師,AOP是必須知道的一門技術。那么AOP是什么呢,這就是今天所討論的內(nèi)容(也是本人最近一陣子的學習總結,希望大家多多指點)。

  AOP,全稱ASPect Oriented Programming,中文名稱叫面向方面編程,也叫面向切面編程

  在實際項目開發(fā)過程中,我們往往會注意到有一些模塊/功能,如權限,緩存等,需要存在于軟件的各個業(yè)務模塊中,而這些模塊/功能又與業(yè)務模塊沒有任何關系,甚至在設計業(yè)務模塊時我們完全不用考慮這些模塊/功能的存在,但是在開發(fā)過程中才發(fā)現(xiàn)這些模塊/功能會給我們帶來無盡的煩惱。因為傳統(tǒng)的OOP方法考慮問題的出發(fā)點往往是要解決問題的本身和延伸,所以遇到此類情況時傳統(tǒng)的OOP方法就很難解決。然而對業(yè)務模塊和此類模塊稍作分析,我們就會發(fā)現(xiàn),其實它們本質(zhì)是相同的,只是解決的問題不同,對一個軟件的關注點不同,如下圖所示:  

結合自己的經(jīng)驗,由圖可知,日志,安全,事務等一類的模塊在一個軟件項目中的位置,AOP要解決的就是此類問題。 AOP的目標便是對這些“橫切關注點”和業(yè)務模塊解耦,從而提升軟件的穩(wěn)定性,擴展性。

  AOP通常包含以下主要概念:

    1. 方面(ASPect):一個關注點的模塊化,這個關注點實現(xiàn)可能另外橫切多個對象。事務管理是J2EE應用中橫切關注點中一個很好的例子。
    2. 連接點(Joinpoint):程序執(zhí)行過程中明確的點,如方法的調(diào) 用或特定的異常被拋出。
    3. 通知(Advice):在特定的連接點AOP框架執(zhí)行的動作。各種類型的通知包括“around”、“before”和“throws”通知。通知類型將在下面討論。許多AOP框架都是以攔截器做通知模型,維護一個“圍繞”連接點的攔截器鏈。
    4. 切入點(Pointcut):指定一個通知將被引發(fā)的一系列連接點 的集合。AOP框架必須允許開發(fā)者指定切入點:例如,使用正則表達式。
    5. 引入(Introduction):添加方法或字段到通知化類。
    6. 接口(IsModified),來簡化緩存。
    7. 目標對象(Target object):包含連接點的對象。也被用來 引用通知化或代理化對象。
    8. AOP代理: AOP框架創(chuàng)建的對象,包含通知。
    9. 織入(Weaving):組裝方面創(chuàng)建通知化對象。這可以在編譯時完成(例如使用ASPectJ編譯器),也可以在運行時完成。Spring和其他一些純Java AOP框架, 使用運行時織入。

        AOP通知類型包括:

        1. Around通知: 包圍一個連接點的通知,如方法調(diào)用。這是最強大的通知。Aroud通知在方法調(diào)用前后完成自定義的行為。它們負責選擇繼續(xù)執(zhí)行連接點或直接返回它們自己的返回值或拋出異常來短路執(zhí)行。
        2. Before通知: 在一個連接點之前執(zhí)行的通知,但這個通知 不能阻止流程繼續(xù)執(zhí)行到連接點(除非它拋出一個異常)。
        3. Throws通知: 在方法拋出異常時執(zhí)行的通知。
        4. After returning通知: 在連接點正常完成后執(zhí)行的通知, 例如,如果一個方法正常返回,沒有拋出異常。
        5. Around通知是最通用的通知類型。大部分基于攔截器的AOP框架如Nanning和JBoss4只提供 Around通知。

            通常AOP的關注點有以下幾方面:

            1. 權限(Authentication)
            2. 緩存(Cache)
            3. 內(nèi)容傳遞(Context passing)
            4. 錯誤處理(Error handling)
            5. 懶加載(Lazy loading)
            6. 調(diào)試(Debug)
            7. 日志(Log)
            8. 跟蹤,優(yōu)化,校準(tracing, profiling and monitoring)
            9. 性能優(yōu)化(Performance optimization)
            10. 持久化(Persistence)
            11. 資源池(Resource pooling)
            12. 同步(Synchronization)
            13. 事務(Transactions)

                了解了AOP的應用場景,下面以權限為例,比較一下傳統(tǒng)方法與AOP方法各自的實現(xiàn),說明AOP技術的應用

                傳統(tǒng)方法:

                      BusinessA ClassicsPermission() {
              if (tag == "Pass") {
              return new BusinessA();
              }
              throw new Exception("你沒有權限操作BusinessA.");
              }

              it知識庫軟件架構師之AOP,轉(zhuǎn)載需保留來源!

              鄭重聲明:本文版權歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

              主站蜘蛛池模板: 九九热最新视频 | 国产精品99精品无码视亚 | 久久青草免费线观最新 | 国产伦子沙发午休系列资源曝光 | 九九久久久2| 狠狠色狠狠色综合日日92 | 精品久久久亚洲精品中文字幕 | 成人毛片免费播放 | 香蕉99久久久久成人麻豆 | 啦啦啦 中文 日本 韩国 免费 | 韩国演艺圈悲惨在线 | 亚洲精品免费视频 | 日韩性大片 | 高h np 强j 乱l 双性 | 国产精品香蕉视频在线 | 青柠在线观看免费高清电视剧荣耀 | 久久黄色片 | 接吻吃胸摸下面啪啪教程 | G0GO人体大尺香蕉 | 久草视频在线观看免费4 | 暖暖免费 高清 日本社区中文 | 99热都是精品 | 亚洲中文字幕欧美自拍一区 | 野草在线视频完整视频 | 亚洲AV综合色一区二区三区 | 国产精品人妻99一区二 | 黄色免费在线网址 | 好大太快了快插穿子宫了 | 国产成人免费不卡在线观看 | 久久99综合国产精品亚洲首页 | 久久精品国产亚洲AV妓女不卡 | 日韩免费一级毛片 | 人妻无码AV中文系列 | 伦理片天堂eeuss影院2o12 | 伊人大香线蕉影院在线播放 | 寂寞夜晚视频在线观看 | 欧美内射深插日本少妇 | 日韩精品特黄毛片免费看 | 中文无码热在线视频 | 天美传媒在线观看免费完整版 | 欧美日韩精品久久久免费观看 |