AOP观念与术语

原创 2006年05月24日 19:08:00

示例下载。

AOP全名为Aspect-Oriented Programming,有关于AOP的许多名词术语都过于抽象,单从字面上并不容易理解其名词意义,这边将以之前介绍代理机制的范例来逐一对照以介绍AOP的术语与观念:

  • Cross-cutting concern

DynamicProxyDemo项目的例子中,记录的动作原先被横切(Cross-cutting)入至HelloSpeaker本身所负责的业务流程之中,另外类似于记录这类的动作,如安全(Security)检查、事务(Transaction)等系统层面的服务(Service),在一些应用程序之中常被见到安插至各个对象的处理流程之中,这些动作在AOP的术语中被称之为Cross-cutting concerns
 

以图片说明可强调出Cross-cutting concerns的意涵,例如原来的业务流程是很单纯的:



现在为了要加入记录(Logging)与安全(Security)检查等服务,对象的程序代码中若被硬生生的写入相关的LoggingSecurity程序片段,则可使用以下图解表示出Cross-cuttingCross-cutting concerns的概念:



Cross-cutting concerns若直接撰写在负责某业务的对象之流程中,会使得维护程序的成本增高,例如若您今天要将对象中的记录功能修改或是移除该服务,则必须修改所有撰写曾记录服务的程序代码,然后重新编译,另一方面,Cross-cutting concerns混杂于业务逻辑之中,使得业务对象本身的逻辑或程序的撰写更为复杂。

  •   Aspect

将散落于各个业务对象之中的Cross-cutting concerns收集起来,设计各个独立可重用的对象,这些对象称之为Aspect,例如在DynamicProxyDemo项目中将登录的动作设计为一个LogHandler类别,LogHandler类别在AOP的术语就是Aspect的一个具体实例,在AOP中着重于Aspect的辨认,将之从业务流程中独立出来,在需要该服务的时候,缝合(Weave至应用程序之上,不需要服务的时候,也可以马上从应用程序中脱离,应用程序中的可重用组件不用作任何的修改,例如在DynamicProxyDemo项目中的HelloSpeaker所代表的角色就是应用程序中可重用的组件,在它需要记录服务时并不用修改本身的程序代码。

另一方面,对于应用程序中可重用的组件来说,以AOP的设计方式,它不用知道处理提供服务的对象之存在,具体的说,与服务相关的API不会出现在可重用的应用程序组件之中,因而可提高这些组件的重用性,您可以将这些组件应用至其它的应用程序之中,而不会因为目前加入了某些服务而与目前的应用程序框架发生耦合。

  • Advice

Aspect的具体实作称之为Advice,以记录的动作而言,Advice中会包括真正的记录程序代码是如何实作的,像是DynamicProxyDemo项目中的LogHandler类别就是Advice的一个具体实例,Advice中包括了Cross-cutting concerns的行为或所要提供的服务。 

  • Joinpoint

Aspect在应用程序执行时加入业务流程的点或时机称之为Joinpoint,具体来说,就是Advice在应用程序中被呼叫执行的时机,这个时机可能是某个方法被呼叫之前或之后(或两者都有),或是某个例外发生的时候。

  • Pointcut

Pointcut是一个定义,藉由这个定义您可以指定某个Aspect在哪些Joinpoint时被应用至应用程序之上。具体的说,您可以在某个定义档中撰写Pointcut,当中说明了哪些Aspect要应用至应用程序中的哪些Joinpoint 

  • Target

一个Advice被应用的对象或目标对象,例如DynamicProxyDemo项目中的HelloSpeaker就是LogHandler这个AdviceTarget

  • Introduction

对于一个现存的类别,Introduction可以为其增加行为,而不用修改该类别的程序,具体的说,您可以为某个已撰写、编译完成的类别,在执行时期动态加入一些方法或行为,而不用修改或新增任何一行程序代码。

  • Proxy

Expert One-on-One J2EE Development WIthout EJB一书中,Rod JohnsonJuergen Hoeller在第八章中有提到,AOP的实作有五个主要的策略: Dynamic ProxiesDynamic Byte Code GenerationJava Code GenerationUse of a Custon Class LoaderLanguage Extensions

在之前静态代理与动态代理中,已经使用实际的程序范例介绍过代理机制的实现,SpringAOP主要是透过动态代理来完成。

  • Weave

Advice被应用至对象之上的过程称之为缝合(Weave),在AOP中缝合的方式有几个时间点:编译时期(Compile time)、类别加载时期(Classload time)、执行时期(Runtime)。
 

结合DynamicProxyDemo的实例,将以上介绍过的AOP相关名词具体的使用图片来加以表示,有助于您对每一个名词的理解与认识:



Spring中AOP操作的相关术语

Joinpoint(连接点): 类里面可以被增强的方法,这些方法称为连接点   Pointcut(切入点):所谓切入点是指我们要对哪些Joinpoint进行拦截的定义.   Advice(通...
  • qq_24693837
  • qq_24693837
  • 2017年02月07日 15:00
  • 499

Spring AOP 术语解释

转自: 1.我所知道的aop    初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等。一下子让你不知所措,心想着:怪不得很多人都和我说aop多...
  • yuanye348623610
  • yuanye348623610
  • 2013年04月19日 12:55
  • 1491

AOP观念与术语

示例下载。AOP全名为Aspect-Oriented Programming,有关于AOP的许多名词术语都过于抽象,单从字面上并不容易理解其名词意义,这边将以之前介绍代理机制的范例来逐一对照以介绍AO...
  • caterpillar_here
  • caterpillar_here
  • 2006年05月24日 19:08
  • 6364

Android App整体架构设计的思考

本文是对我在知乎一个回答的整理,其中的内容大多是对我平时的阅读和实践的总结,希望对Android的开发者有所帮助。但毕竟是个人的一些思考,难免有疏漏,也欢迎对本文的内容提出建议。 1. 架构设计...
  • ysh06201418
  • ysh06201418
  • 2015年06月17日 15:00
  • 52959

AOP观念与术语

示例下载。AOP全名为Aspect-Oriented Programming,有关于AOP的许多名词术语都过于抽象,单从字面上并不容易理解其名词意义,这边将以之前介绍代理机制的范例来逐一对照以介绍AO...
  • wintersunair
  • wintersunair
  • 2006年10月12日 11:47
  • 964

AOP术语详解

==== 关注点 (Concern)====  关注点就是我们要考察或解决的问题。如订单的处理,用户的验证、用户日志记录等都属于关注点。   关注点中的核心关注点 (Core Concerns)...
  • zhangJIAwei520
  • zhangJIAwei520
  • 2012年04月18日 19:41
  • 2408

Spring4 之AOP 实现原理

原文链接:http://blog.csdn.net/moreevan/article/details/11977115/ AOP:面向切面编程(也叫面向方面编程):Aspect Oriented P...
  • u011138533
  • u011138533
  • 2017年05月08日 19:35
  • 299

xxx下

这部分主要是开源Java EE框架方面的内容,包括Hibernate、MyBatis、Spring、Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题,...
  • qq_27886997
  • qq_27886997
  • 2017年09月11日 12:59
  • 143

Spring的AOP框架的主要术语

代理(Proxy)是由AOP框架生成的一个对象,用来
  • lms1719
  • lms1719
  • 2014年05月18日 00:08
  • 1168

AOP的主要概念和术语

 ====关注点(Concern)====关注点就是我们要考察或解决的问题。如订单的处理,用户的验证、用户日志记录等都属于关注点。 关注点中的核心关注点(Core Concerns),是指系统中的核心...
  • totogogo
  • totogogo
  • 2007年04月24日 18:06
  • 1029
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AOP观念与术语
举报原因:
原因补充:

(最多只允许输入30个字)