AOP技术

来源:互联网 发布:性 婚姻 知乎 编辑:程序博客网 时间:2024/06/16 19:01

  Aspect Oriented Programming(AOP)-面向切面编程是近来较为热门的一个话题。

 

一、AOP与OOP的比较

    AOP与OOP在字面上虽然非常类似,但却是面向不同领域的两种设计思想。OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。而AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差异。

 

二、AOP中几个比较重要的概念

  1. 切面(Aspect)

      切面,对象操作过程中的截面。这可能是AOP中最关键的一个术语,指的是业务处理过程中的某个步骤或阶段。通过切面,我们可以将系统中各个不同层次上的问题隔离开来,实现统一集约式处理,各切面只需集中于自己领域内的逻辑实现。这一方面使得开发逻辑更加清晰,专业化分工更加易于进行;另一方面,由于切面的隔离,降低了耦合性,我们就可以在不同的应用中将各个切面组合使用,从而使得代码可重用性大大增强。

 

   2. 连接点(JoinPoint)
       程序运行过程中的某个阶段点。如某个方法调用,或者某个异常被抛出

 

  3. 处理逻辑(Advice)
       在某个连接点所采用的处理逻辑。处理逻辑的调用模式通常有三种:
     i. Around
        在连接点前后插入预处理过程和后处理过程。
    ii. Before
        仅在连接点之前插入预处理过程。
    iii. Throw
        在连接点抛出异常时进行异常处理。

 

  4. 切点(PointCut)
       一系列连接点的集合,它指明处理方式(Advice)将在何时被触发。

 

   对于AOP组件而言,很重要的一点就是源码组成无关性。所谓源码组成无关性,体现在具体设计中就是AOP组件必须与应用代码无关,简单来讲,就是应用代码可以脱离AOP组件独立编译。为了实现源码组成无关性,AOP往往通过预编译方式(如AspectJ)和运行期动态代理模式(如Spring AOP 和JBoss AOP)实现。

 

原创粉丝点击