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

軟件架構師之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,轉載需保留來源!

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

              主站蜘蛛池模板: 色偷偷亚洲男人天堂 | 一本道久在线综合色色 | 中国午夜伦理片 | 国产色综合久久无码有码 | 中俄两军在日本海等上空战略巡航 | 两个奶被男人揉了一个晚上 | 看黄色片子 | 免费女人光着全身网站 | 沈阳熟女露脸对白视频 | 日韩亚洲国产欧美免费观看 | 好男人视频免费高清在线观看www | 亚洲在线视频自拍精品 | 欧美一区二区三区久久综 | 亚洲免费大全 | 欧美18在线 | 日本视频一区二区免费观看 | 精品国产九九 | 973午夜伦伦电影论片 | 国产69精品久久久久妇女 | 国内精品乱码卡一卡2卡三卡 | 男人桶女人j的视频在线观看 | 嫩草国产精品99国产精品 | 免费麻豆国产黄网站在线观看 | 国产欧洲野花A级 | 亚洲2017天堂色无码 | 午夜日韩久久影院 | 久久99精品国产自在自线 | 2021扫黑风暴在线观看免费完整版 | 亚洲一级毛片免费在线观看 | 超碰国产亚洲人人 | 亚洲人成网77777色在线播放 | 亚洲精品第一综合99久久 | 双性被疯狂灌满精NP | 女人18毛片 | 久久99热这里只频精品6 | 动漫美女无衣 | 少妇的肉体AA片免费 | 午夜看片福利在线观看 | 日本精品久久久久中文字幕 | 草神被爆漫画羞羞漫画 | 久久高清内射无套 |