jacksun1978

导航

 

AOP(面向切面的编程)与OOP之间是互相补充的关系,OOP主要用于将核心领域模型映射为类和对象,包括属性和方法,而AOP用于将传统散布的各个领域对象中的共同关注点,如日志记录,权限控制等这些与核心业务无关的内容封装起来,减少系统中的重复代码。将一个系统实现分为核心关注点和横切关注点,核心关注点通过OOP来实现,而横切关注点抽象为一个个切面,通过AOP来实现。

AOP采用与传统相反的方式,例如要实现一个日志记录,传统的实现方式是在领域模型中每个需要记录日志的地方都调用日志记录的方法,导致系统在水平层面存在很多的重复代码,而AOP是通过在一个切面中封装日志记录的功能,然后注册哪些地方需要调用这个功能。这样就使得领域模型只关注于核心业务,从而使得代码更容易理解。

通过利用AOP技术,改变了整个系统的设计方式。在分析系统需求之初,利用AOP的思想,分离出核心关注点和横切关注点。在实现了诸如日志、事务管理、权 限控制等横切关注点的通用逻辑后,开发人员就可以专注于核心关注点,将精力投入到解决企业的商业逻辑上来。同时,这些封装好了的横切关注点提供的功能,可 以最大限度地复用于商业逻辑的各个部分,既不需要开发人员作特殊的编码,也不会因为修改横切关注点的功能而影响具体的业务功能

AOP中用到的术语:

1、join point(连接点):是程序执行中的一个精确执行点,例如类中的一个方法。它是一个抽象的概念,在实现AOP时,并不需要去定义一个join point。
2、point cut(切入点):本质上是一个捕获连接点的结构。在AOP中,可以定义一个point cut,来捕获相关方法的调用。
3、advice(通知):是point cut的执行代码,是执行“方面”的具体逻辑。
4、aspect(方面):point cut和advice结合起来就是aspect,它类似于OOP中定义的一个类,但它代表的更多是对象间横向的关系。
5、introduce(引入):为对象引入附加的方法或属性,从而达到修改对象结构的目的。有的AOP工具又将其称为mixin。

上述的技术特性组成了基本的AOP技术,大多数AOP工具均实现了这些技术。它们也可以是研究AOP技术的基本术语。

posted on 2011-07-20 15:57  jacksun1978  阅读(240)  评论(0)    收藏  举报