一些术语
Concern:一个特定的问题,关注点。这并不是AOP中才有的概念,OO中也有concern,只不过是采用OO的方法来实现。
Crosscutting concern:其实现切过了多个类的concern,比如安全检查,事务处理等。
ASPect:模块化的crosscutting concern。也就是将安全检查之类的在许多类中都要用到的通用功能,用统一的模块化的代码加以提取实现。这就是所谓的方面。这其实也可以使用面向对象的方式来实现,只不过在AOP中不需要在用到这些功能的地方进行显示调用。对于业务程序员,方面模块是透明的。
Join point:程序执行过程中的连接点,切换点。AOP就是在这些点中打入锲子,将aspect(方面)切入到连接点中,包括三种:
l 方法调用点
l field访问点
l 异常抛出点
Advice:也就是aspect的具体实现,在join point中插入的东西,在程序执行到join point的时候,会执行advice。很多AOP框架中使用interceptor(解释器)来实现。三种类型:
l Before(pre):在join point之前调用
l After(post):在join point 之后调用
l Around:advice控制对join point的调用
Pointcut:一组join point。
IntrodUCtion:给类或者接口增加方法或成员
Mixed inheritance:使用introduction方式来实现类似于多重继承的功能
Weaving:将方面织入到程序执行流程中。进入讨论组讨论。
(出处:http://www.knowsky.com)