基于AOP技术研究与探讨.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于AOP技术研究与探讨

基于AOP技术研究与探讨   [摘要]软件工程的一条重要原则是功能点分离,将不同的功能分离于各自的模块中来实现程序的结构化。现在的大多数软件都采用面向对象的开发方法,通过识别对象来分解业务逻辑对象。但是面向对象也有其局限性,对很多问题并不能很好地加以分解和隔离。面向方面编程(Aspect-oriented Programming, AOP)作为面向对象编程(OOP,Object Oriented Programming)的一种补充,它成功的通过将横切点分离,解决面向对象编程上在功能点分离上的不足。就是在这样的背景下对AOP技术进行研究和探讨,希望对相关人员有所帮助。   [关键词]AOP OOP 对象 切面   中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0810094-01      一、引言      OOP技术的出现在很大程度上解决了现实中存在的部分问题,对于软件系统的开发方式产生了极大的影响。从某些方面来看,OOP采用的具体方法是用分解的方式,将完整的软件系统划分为相对较小的、易于分析和理解的模块,从而方便地进行各个功能模块的设计和编码。但是如果我们将实现系统业务功能的模块看作系统的纵向分解单元的话,那么问题也就来了。通过简单的分析,可以看出,上述分散在功能模块中的功能与行为之间形成了一种横向的方面,而方面与模块形成了横切(Crosscutting),继而造成传统的编程技术无法将方面模块化,两种代码纠结在一起。造成代码纠结的原因是在传统的编程技术中,软件系统中非业务功能实现的代码无法模块化,它们散布在实现业务功能的代码中,继而造成这种情况。与此同时,OOP它在本质上是静态的,因此需求上的任何细微变化都有可能对软件开发的整体进度造成重大影响。在这样的背景下,Gregor Kiczales于1997年在ACM Communication上发表论文《Aspect-oriented Programming》,第一次提出了面向方面编程。      二、将AOP引入问题领域      日常中,我们运用OOP来进行软件开发时,很多时候问题领域的某些对象恰恰并不属于业务逻辑范畴,然而却在系统中广泛分布。最常见的例子就是日志和权限检查。以日志为例,它在系统中处处存在,然而就问题领域来说,日志和业务逻辑毫无关系。对于面向对象来说,传统的解决方案是将日志功能声明成一个类或接口来实现日志功能,然后让需要此功能的对象来继承或者引用这个类,进行功能调用。这就要求调用方要手动编码,日志功能的存在与否要依赖于程序员是否记得进行相应的调用。从另一方面说,如果日志功能需要进行修改和变动,那么很可能所有的调用函数可能都要进行修改。这样的修改将会遍布整个系统,无疑会增加出错的几率和系统维护的难度。对于类似于日志这样的功能,它存在于系统的各个模块之间,但又不属于某个具体的业务逻辑对象,在AOP中被称为“横切关注点”。OOP侧重于通过继承来描述对象之间的泛化-特化关系,这是一种“纵”的关系;而AOP则关注的是各种对象之中所共存的一种“横切”关系。AOP便是通过记录代码中各个关注点的位置来将这些散落在系统各处的功能实现统一在一个模块之中。   开发者通过对关注点的分离,将横切的功能以模块化的形式来表现,使得代码更易于维护和重用。AOP并不想替代OOP或者其他基于对象的方法。相反AOP作为OOP的补充,通过支持一种新的从组件分离出方面的方式,用来弥补OOP的缺陷。      三、AOP结构      面向方面编程是一个崭新的程序结构模式,作为面向对象程序设计的补充,它影响力是深远而悠长的,作为一种新的技术,它提出许多全新的概念。下面先介绍一下AOP中各个重要概念的定义:   (一)关注点(concern)   一个关注点可以是一个特定的问题、概念、或是应用程序的应用域总而言之,应用程序必须达到的一个目标。   (二)横切关注点(crosscutting concern)   如果一个关注点的实现代码散落在很多个类或方法之中,就像前面那个“安全检查”的例子那样,我们就称之为“横切关注点”。   (三)连接点(joint point)   连接点是代码中一个明确定义的位置,关注点将在这里横切应用程序。连接点可以是方法调用、构造函数调用、异常处理程序、或者程序执行中的其他点。   (四)切入点(pointcut)   一组连接点的总称,用于指定某个增强何时应该被调用。切入点可以用正则表达式或通配符来描述。有些AOP实现技术还支持切入点的组合。   (五)方面(aspect)   方面是AOP的模块单元,其地位就相当于面向对象程序设计中的类,它将连接点、通知以及类型间声明封装在一起。同类相

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档