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

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

              主站蜘蛛池模板: 亚洲日本乱码中文论理在线电影 | 777久久人妻少妇嫩草AV | 九九热在线免费观看 | 最新国产亚洲亚洲精品视频 | 国产国产乱老熟女视频网站97 | 十分钟免费看完整视频 | 国产精品乱码色情一区二区视频 | 精品亚洲国产成AV人片传媒 | 国产在线观看香蕉视频 | 久草在在线免视频在线观看 | 無码一区中文字幕少妇熟女网站 | 亚洲第一免费播放区 | 吃春药后的女教师 | 国产午夜人做人免费视频中文 | 2012中文字幕手机在线 | 色淫阁色九九 | 亚洲AV中文字幕无码久久 | 国产 精品 亚洲 欧美 高清 | 深夜释放自己在线观看 | 在线精彩视频在线观看免费 | 港台三级大全 | 久久99r66热这里只有精品 | 97在线免费观看 | 久久精品亚洲AV中文2区金莲 | 亚洲热在线视频 | 蜜桃婷婷狠狠久久综合9色 蜜桃视频一区二区 | 97人人看碰人免费公开视频 | 女人高潮时一吸一夹 | 成人欧美尽粗二区三区AV | 国产精品ⅴ视频免费观看 | 打开双腿狠狠蹂躏蜜桃臀 | 国产精品嫩草影院在线观看免费 | 亚洲 中文 自拍 无码 | 国内精品久久久久久久999下 | ⅹxx日本护土 | 国产精品丰满人妻AV麻豆 | 久久无码AV亚洲精品色午夜 | 狠狠狠色丁香婷婷综合久久 | 95国产精品人妻无码久 | 国产综合18久久久久久软件 | 狠狠射首页 |