最爱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 阅读(473) 评论(0)  编辑  收藏 所属分类: 《AspectJ Cookbook》读书笔记


只有注册用户登录后才能发表评论。


网站导航:
 

公告


导航

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

统计

常用链接

留言簿(4)

随笔分类

随笔档案

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜