• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

面向方面的编程:它的好处是什么?

发布: 2008-6-18 11:18 | 作者: 不详 | 来源: developerworks | 查看: 61次 | 进入软件测试论坛讨论

领测软件测试网 关键字:AOP概念

最近,我被要求领导我们软件工程研究小组(SERG)开一个关于面向方面的编程(AOP)的讨论。在会议开始前的几小时,一个学生问我:“那么,方面的好处是什么?但是不要给我关于日志的例子。那似乎是我阅读关于方面的东西时,唯一看见的东西。”

他的问题促使我停下来,并考虑将AOP应用于一些正在做的软件系统的有效方法。他同时也使我认识到需要如何和什么时候采用新的方法,尤其是当他们需要一个新的思考方式时。AOP,我之前在这个专栏已经谈论过,它似乎代表了一个新方法。我想谈论一些我认为AOP可以被(或已经被)有效使用的方法。同时我们将看到一些可能有助于AOP推广的最新进展。

我将在讨论中使用面向方面的Java作为例子。然而,当今有很多种面向方面执行的可用语言。这些语言包括AspectC++甚至于AspectL,它是一种面向方面的Lisp执行语言。1

AOP概念的回顾

如果你不熟悉AOP,有很多关于它的介绍文章,包括我2004年2月发表的的文章。2很多,也许不是全部,关于AOP的介绍使用日志作为一个例子来说明方面的概念。(日志是很多人都懂的东西,并且它是AOP可以被如何使用的一个很好的例子。)方面的关注点是横切。那就是说,它们不能被简单地归为一类。但是,如果我们严格按照面向对象的范例,我们需要将这些业务重新整合为一个统一的,可维护的方式。通常,横切的责任被委派给一个单独的帮助者类,并依靠每一类来要求由方面表达出的功能性,包括在合适的地点进行调用。保证开发人员始终在编码的合适点上插入登陆是较难实施的。方面提供了一个机制来改善这种状况,尽管它还不完美。

有一些概念你需要知道以便你理解这篇关于AOP的讨论。主要概念就是连接点。这是一个所有编程人员都熟悉的概念,但我们现在有一个新名字给它。一个连接点是:一个在程序流程中定义明确的点。3连接点有很多类型,正如一个方法的调用或一个方法的返回,都可以是一个正常的返回或者抛出一个异常。

使用AOP,我们需要一个在一个程序中识别连接点的方法。AspectJ使用切入点来描述一个或更多的连接点。切入点是一个用来描述一套连接点的表达式。你可以把切入点想象成对你的编码的一个查询,用它来返回一系列的连接点。

当你选择一系列连接点的时候,你可以为它们提供参考建议。参考建议是一种可执行的编码,当连接点遭遇到程序运行时,它就需要运行。连接点,切入点和参考建议关注于你的软件的动态属性。参考建议改变了程序编码的运行特性。

有一个可以处理你的系统的静态特性。就是类型间声明。类型间声明允许你改变一个程序的动态结构。你可以增加程序和变量,并根据特殊的规则改变继承性层次。

正如类是Java模块化的单元,方面是AspectJ模块化的附加单元。方面封装了一个横切关注点的连接点,切入点,类型间声明和参考建议。AOP不是面向对象分析和设计的一个替代。它通过处理许多面向对象方法不能充分提供最合适方案的情形,构建了面向对象的范例。

AOP实例

现在让我们来看看AOP可以在何处使用的一个实例。一些实例可以在生产系统中找到,而另外一些可以在生产和开发环境中找到。让我们从开发人员的一对实例开始吧。

执行追踪

我惊讶于如此多的开发人员将某些类型的打印语句放入他们的编码中,来调试或跟踪一个程序的执行。我发现调试程序善于给出信息。但我们不在这里讨论了解你的调试程序的价值。当然,想要生产一些你的程序的文本跟踪信息,是有一些合理原因的。在Eclipse当前的一套AspectJ Development Tools(AJDT)中有一个关于方面的很好的实例,那个方面实现了一个程序执行跟踪的过程。在Eclipse的帮助中,有关于这个实例的详细描述。你可以在AspectJ Programming Guide中找到它。

实例有一个小Java应用程序,它有很多类来表现二维图形,就像圆形和方形。同时它还有一个主要程序来创建两个圆形和一个方形,并打印出它们的方面,诸如面积,周长,以及它们中心点间的距离。当你运行程序时,你将得到如图1所示的输出结果。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

51/512345>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网