实战中的 AspectJ:从项目示例到代码重构
1. 项目示例中的 AspectJ 应用
1.1 项目背景与时间价值
在某些项目里,时间价值和特定对象(如 Projectile 对象)的处理至关重要。将时间价值和 Projectile 对象返回给系统后,原代码才能继续处理。例如,图 14.4 展示了 Projectile 随时间推进的示例,发射后其轨迹呈弧形,随时间推移继续下落。
1.2 测试优势
把相关关注点融入示例带来的一个好处是,测试团队在应用运行时能史无前例地访问大量变量。此外,团队还能更改时间值,以此确定代码对错误数据等情况的反应。
1.3 文档维护
对现有应用进行任何更改时,保持文档一致很重要。在这个案例中,除代码本身外,初始设计信息并不存在。于是创建了基于 UML 的类图,以帮助理解应用架构。既然图已创建,保持其更新就很有用。
1.4 UML 与 AOP 概念
不少文章探讨了扩展 UML 以处理 AOP 概念的问题。图 14.5 显示了为何在 UML 图中添加 AOP 会引发诸多讨论。在图 14.5 的 UML 类图中,处理第一个关注点的 PathLogging 类被添加到应用中,它是普通的 Java 类,不会给 UML 图带来问题。第二个关注点由名为 LogIntermediate 的 AspectJ 切面处理,从图上看,该切面就像应用中的另一个类,既无切面横切应用的指示,也未显示切入点等构造。第三个关注点同样由切面处理,但看起来也像个类。虽然可在 UML 图中添加大量注释,但以能凸显切面是应用附属物、且在很多情况下移除它们不会影响应用的形式来表示切
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



