快速业务通道

AOP@Work: 使用AspectJ 5检验库方面 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
ublic Price getPriceForSummary() // ...

AOP@Work: 使用AspectJ 5检验库方面(9)

时间:2011-09-07 IBM Wes Isberg

Jodi 的决断就是常量注释

Jodi 天生眼光敏锐、严格苛刻:她总是希望了解事情有无变化。她特别擅长 多线程编程,一直希望 Java 语言中有 C 语言的关键字 const,在多线程代码 中 ,const 函数不会导致任何转变,因此也不必为访问该函数而忧虑。为满足 Jodi 的需求,您提供了 Const 方面。若试图修改标记为只读的字段或者是标明为只 读 的方法或类,试图访问非可读内容,它就会报错。Zed 非常喜欢这种思想,但认 为它不会太有用。然而,由于它们仅仅是注释,并且方面中仅有错误声明语句, 所以该方面是无害的。

为处理确实发生了变化的状态,Jodi 希望能实现一个版本号,若在上一次读 取状态后,状态发生了变化,则版本号将简化对客户机的通知。针对这种需求, 您提供了一个具体方面 Versioning。Jodi 无需编写切入点或注释,她可以通过 声明目标类型来实现 IVersioned,如清单 11 所示:

清单 11. IVersioned 接口

public interface IVersioned {  int getVersion(); }

Versioning 方面处理实现,API 客户机直接使用版本号。Zed 反对编译必须 使用 Versioning,这样就无法将其从系统中移除,也无法在装入时织入中使用 。 Jodi 表示将与 Holly 一起工作,观察该方面是否可用于缓存;并将进行试验, 观察该方面是否有助于避免在多线程程序中使用锁。AspectJ 至少有助于完成试 验,即便最终实现直接以代码编写。

Kelli 跟踪事情的状态

Kelli 是开发专家之一,测试部门向她抱怨说,出现了大量因未遵循协议而 出 现的故障。为及时检测到协议中的无效步骤,Kelli 希望为组件或子系统维护状 态模型。她向您描述了一个简单的资源模型:该模型必须在写入之前打开、在打 开之后关闭,且在关闭后不得再打开或写入。您为她提供了两个方面,如表 6 所 示:

表 6. 跟踪方面

TrackedNames 将名称与各联结点相关联,提交给可插拔跟踪程序
TrackedMethods 扩展 TrackedNames,从文件中读取允许的状态转换,并进行失效实 时 处理

TrackedNames 将联结点名称作为转换,并向委托 ITracker 查询转换是否有 效。跟踪程序维护所有必需的逻辑和状态。可用的两个 ITracker 是 TrackedSequence 和 StateTracker。

图 3. 跟踪类关系

AOP@Work: 使用AspectJ 5检验库方面 - 编程入门网

TrackedSequence 以正则表达式的形式表示有效名称序列。例如,${open} ${write}*${close}. StateTracker 从文件中读取状态转换,在本例中的形式如 下:

清单 12. 资源状态转换

START START open OPEN OPEN write OPEN OPEN close CLOSE

在 TrackedMethods 和 TrackedNames 之间,Kelli 倾向于前者,因为她喜 欢 将转换作为方法名称定义;在 StateTracker 和 TrackedSequence 之间,Kelli 倾向于前者,因为它可在无效转换发生时立即检测到。总体来说,她使用 TrackedMethods 扩展 TrackedNames,使用 StateTracker 在错误步骤发生时及 时检测。

Buddy 指出,有了缓存的键映射方法,Kelli 可以将 getName() 重写为重新 映射名称,而不必使用联结点名称。Zed 喜欢文件的转换表形式,因为它还可用 于其他方面,例如生成测试案例的完整集合等。Connor 认为这不仅仅可用于跟 踪 ,也可用于实现复杂的协议,例如,将一系列资源写入操作打包到一个转换内。

AOP@Work: 使用AspectJ 5检验库方面(10)

时间:2011-09-07 IBM Wes Isberg

Liz 爱玩弄并发

Liz 曾靠在业余时间表演魔术而读完大学,她至今仍保留着一颗顽皮的心, 这 非常适合她的研究职位。Zed 要求她就并发做一些实验,尝试提

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多
  • iBATIS 3内的新特性:将iBATIS用作应用程序内的一种持久框架 - 编程入门网
  • Photoshop绘制高光水晶质感水晶苹果
  • Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

    地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

    电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

    《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号