最愛Java

          書山有路勤為徑,學海無涯苦作舟

          《AspectJ Cookbook》讀書筆記一: 面向方面的概述

          橫切關注點
                  面向對象編程的基本前提就是讓開發人員能夠在軟件中表述模塊化的橫切關注點(crosscutting concern)。橫切關注點是跨軟件特定部分使用的一種行為,通常也是一種數據。它可能是一種約束,作為軟件本身的一種特征,或者只是所有類都必須執行的一種行為。

          方面
                  方面(aspect)是橫切關注點的另一種稱呼。方面提供了一種機制,利用該機制,可以用一種模塊化的方式指定橫切關注點。為了充分利用方面的威力,我們需要了解一些基本概念,以便用一般的方式指定和應用方面。我們必須能夠:
                  以模塊化的方式定義方面
                  動態地應用方面
                  根據一組規則應用方面
                  根據一種機制和一種環境,用于指定將為特定方面執行的代碼
                  面向方面方法提供了一組語義和語法構造來滿足這些要求,使得無論編寫的是哪一類軟件,都可以一般地應用方面。這些構造就是通知(advice)、連接點(join point)和切入點(pointcut)。

           通知
                  通知就是方面被調用時所執行的代碼。通知包好自身的一組規則。這組規則規定了何時調用通知,這是與被觸發的連接點相關的。

           連接點
                  連接點就是可能會或者可能不會調用某個通知的應用程序內的特定點。AspectJ中支持的連接點:
                  被調用方法時連接
                  在方法執行期間連接
                  在調用構造函數時連接
                  在構造函數執行期間連接
                  在方面通知執行期間連接
                  在對象初始化以前連接
                  在對象初始化期間連接
                  在靜態初始化執行期間連接
                  在引用類的字段時連接
                  在給類的字段賦值時連接
                  在執行處理程序時連接

           切入點
                  切入點是用于聲明連接點中關注AspectJ機制,用來發起一份通知。

          public class MyClass
          {
            
          public void foo(int number,String name)
            
          {
              System.out.println(
          "Inside foo(int,String)");
            }


            
          public static void main(String[] args)
            
          {
              
          //Create an instance of MyClass
              MyClass myObject = new MyClass();
              
          //Make the call to foo
              myObject.foo(1 , "Russ Miles");
             }

          }

                  上述類中每一條語句都可看做是潛在的連接點。而下述類中則分別申明了切入點和通知。

          public aspect Some Aspect
          {
            
          //A Pointcut declaration
            pointcut somePointcut():<pointcut logic>;

            
          //A block of Advise
            before:somePointcut()
            
          {
              
          //Do something
            }

          }

          posted on 2008-06-22 23:34 Brian 閱讀(489) 評論(0)  編輯  收藏 所屬分類: 《AspectJ Cookbook》讀書筆記

          公告


          導航

          <2008年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 新密市| 兰考县| 新安县| 四川省| 凭祥市| 来安县| 永年县| 万载县| 海阳市| 阳曲县| 江源县| 永和县| 青海省| 衡阳市| 新泰市| 任丘市| 金川县| 牙克石市| 会东县| 崇义县| 广安市| 曲阳县| 鄱阳县| 电白县| 白沙| 通河县| 济宁市| 乐业县| 宁强县| 新竹县| 宁蒗| 鄂托克旗| 齐齐哈尔市| 尚义县| 横山县| 宁远县| 延寿县| 锦屏县| 浏阳市| 龙泉市| 阿瓦提县|