閑人野居
          好好學習,天天向上
          posts - 57,  comments - 137,  trackbacks - 0
          ???????? AOP這個概念提出來很久了,可對它總是一知半解。這幾天好好補了一下其中的知識,終于有所突破。
          ???????? 簡單的來說,AOP就是面向方面(aspect)編程。具體的概念是這樣的:
          ???????? 面向 Aspect 的編程(AOP)是一種新的編程技術,它允許程序員對 橫切關系(crosscutting concerns)(跨越典型職責界限的行為,例如日志記錄)進行模塊化。AOP 引進了 Aspect,它將影響多個類的行為封裝到一個可重用模塊中。
          ???????? 那什么是橫切??
          ??????? 橫切
          是面向方面編程的專有名詞。它指的是在一個給定的編程模型中穿越既定的職責部分(比如日志記錄和性能優(yōu)化)的操作。在橫切的世界里,橫切有兩種類型:動態(tài)橫切和靜態(tài)橫切。
          ??????? 動態(tài)橫切
          ?????? 動態(tài)橫切
          是通過 切入點連接點 在一個 方面 中創(chuàng)建行為的過程,連接點可以在執(zhí)行時橫向地應用于現(xiàn)有對象。動態(tài)橫切通常用于幫助向對象層次中的各種方法添加日志記錄或身份認證。下面讓我們花點時間了解一下動態(tài)橫切中的一些實際概念:
          • 方面(aspect)類似于 Java 編程語言中的類。方面定義切入點和通知(advice),并由諸如 AspectJ 這樣的方面編譯器來編譯,以便將橫切(包括動態(tài)的和靜態(tài)的)織入(interweave)現(xiàn)有的對象中。

          • 一個 連接點(join point) 是程序執(zhí)行中一個精確執(zhí)行點,比如類中的一個方法。例如,對象 Foo 中的方法 bar() 就可以是一個連接點。 連接點是個抽象的概念;不用主動定義一個連接點。

          • 一個 切入點(pointcut) 本質上一個用于捕捉連接點的結構。例如,可以定義一個切入點來捕捉對對象 Foo 中的方法 bar() 的所有調用。和連接點相反,切入點需要在方面中定義。

          • 通知(advice) 是切入點的可執(zhí)行代碼。一個經(jīng)常定義的通知是添加日志記錄功能,其中切入點捕捉對對象 Foo 中的 bar() 的每個調用,然后該通知動態(tài)地插入一些日志記錄功能,比如捕捉 bar() 的參數(shù)。

          ?????? 這些概念是動態(tài)橫切的核心,雖然正如我們即將看到的,它們并不全都是靜態(tài)橫切所必需的。

          ?????? 靜態(tài)橫切

          ???? 靜態(tài)橫切 和動態(tài)橫切的區(qū)別在于它不修改一個給定對象的執(zhí)行行為。相反,它允許通過引入附加的方法字段和屬性來修改對象的 結構。此外,靜態(tài)橫切可以把擴展和實現(xiàn)附加到對象的基本結構中。
          ??? 雖然現(xiàn)在還無法談及靜態(tài)橫切的普遍使用——它看起來是 AOP 的一個相對未被探索(盡管非常具有吸引力)的特性——然而這一技術蘊含的潛力是巨大的。使用靜態(tài)橫切,架構師和設計者能用一種真正面向對象的方法有效地建立復雜系統(tǒng)的模型。靜態(tài)橫切允許您不用創(chuàng)建很深的層次結構,以一種本質上更優(yōu)雅、更逼真于現(xiàn)實結構的方式,插入跨越整個系統(tǒng)的公共行為。

          ??????

          posted on 2006-09-06 20:05 布衣郎 閱讀(720) 評論(0)  編輯  收藏 所屬分類: 設計相關aop

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           

          <2006年9月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          留言簿(12)

          隨筆分類(59)

          隨筆檔案(57)

          blog

          java

          uml

          搜索

          •  

          積分與排名

          • 積分 - 357342
          • 排名 - 155

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 秦皇岛市| 本溪市| 轮台县| 黑山县| 九龙城区| 武乡县| 亚东县| 广西| 浮山县| 定安县| 康定县| 龙川县| 会理县| 新乡县| 屯昌县| 朝阳市| 紫云| 新化县| 滦平县| 乌苏市| 北流市| 汾西县| 竹山县| 河北省| 安陆市| 丹阳市| 北海市| 搜索| 肥西县| 蒲江县| 银川市| 梅河口市| 武城县| 中牟县| 修文县| 高要市| 寿光市| 常熟市| 桃江县| 巴彦县| 苗栗县|