一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

軟件架構師之AOP

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

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

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

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

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

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

        AOP通知類型包括:

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

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

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

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

                傳統方法:

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

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

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

              主站蜘蛛池模板: 婷婷亚洲视频 | 天天色国产 | 69精品| 日韩美女va毛片在线播放 | 国产九九在线观看播放 | 美女黄色在线观看 | bt7086福利一区二区三区最新 | 欧美人善zozσ性伦交 | 精品一区二区三区四区五区 | 亚洲国产精品日韩一线满 | 亚洲免费小视频 | 成人福利免费观看体验区 | 久久国产成人亚洲精品影院老金 | 色精品一区二区三区 | 美国一级毛片aa黑寡妇 | 亚洲综合精品香蕉久久网 | 美女黄网站视频 | 99热国产精品 | 国产2021成人精品 | 69国产成人综合久久精品91 | 四虎永久在线精品免费观看地址 | 婷婷综合久久 | 国产精品系列在线观看 | 欧美激情图片小说 | 久久er国产精品免费观看1 | 成人午夜在线观看 | 深夜影院深a入口 | 色偷偷亚洲第一成人综合网址 | 成年美女黄网站色大 | 91精品国产三级在线观看 | 久久精品国产精品亚洲婷婷 | 国产精品福利小视频 | 国产欧美在线观看精品一区二区 | 国产熟睡乱子伦视频观看看 | 免费 高清 日本视频 | 美女三级网站 | 欧美激情精品久久久久久大尺度 | 久久99网站 | 国外成人免费视频 | av中文字幕在线 | 国产高清在线精品一区二区三区 |