天天躁日日躁狠狠躁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,轉載需保留來源!

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

              主站蜘蛛池模板: 日韩精品 中文字幕 有码 | 欧美乱码伦视频免费66网 | 色婷婷狠狠97成为人免费 | 久久88综合 | 国产a视频视卡在线 | XXXchinese国产HD| 国产成人女人视频在线观看 | 暖暖 免费 高清 日本视频5 | 最新亚洲中文字幕在线观看 | 一区一区三区产品 | 最新国产在线视频 | 日日做夜夜欢狠狠免费软件 | 久久天天婷婷五月俺也去 | 中文字幕A片视频一区二区 中文字幕AV在线一二三区 | 曰韩一本道高清无码av | 在线播放一区二区精品产 | 麻豆官网入口 | 日本特交大片免费观看 | 俄罗斯18xv在线观看 | 老子午夜伦不卡电影院 | 久久久久久久久女黄 | 午夜神器老司机高清无码 | 国产精品久久久久久影院 | 综合亚洲桃色第一影院 | 原神美女被超污app 御姐被吸奶 | 亚洲视频在线观看免费 | 毛片免费大全 | 美国大臿蕉香蕉大视频 | 欧美精品高潮呻吟AV久久 | 精品区2区3区4区产品乱码9 | 小雪奶水涨翁工帮吸的推荐语录 | 世界上第一个得抑郁症的人是谁 | 乱精品一区字幕二区 | 欧美乱子YELLOWVIDEO | 高H高肉强J短篇校园 | 在线视频免费观看 | 中文字幕久精品视频在线观看 | 99这里只有是精品2 99这里有精品视频视频 | 午夜神器老司机高清无码 | 中文字幕无线观看不卡网站 | 91进入蜜桃臀在线播放 |