AOP@Work: 使用AspectJ 5检验库方面 - 编程入门网
到有些极为出色的库方面实际上非常小,尤其是 那些将纯粹的 Java 代码实现于一个超类之中的库方面更是如此,而超类可独立 实例化、独立测试。(这里他给出的例子是 ThrownObserver 和 AbstractSubjectObserver。)Holly 和 Kelli 对缓存与版本控制的合并非常感 兴趣。每个方面实现部分解决方案,而不是直接将方面放在一起使用,这样各部 分都可以在其他解决方案中使用。与 Java 中的情况一样,通用公共接口有助于 避免使实现的各部分了解过多关于其他部分的信息。无论对于注释来说,还是对 于由关注主体定义的公共切入点来所,这都是可以实现的。
Zed 需要定论…… Zed 要求您提供一份考虑事项一览表。下面就是您为他提供的: 1.方面用于产品还是开发?降低风险! 2.方面是可选的还是必备的(例如 ,必须使用方面才能完成编译)?必要程度如何?如果方面发生故障或被删除会 怎样? 3.需要什么才能限定一个库方面? 1.无 2.可选切入点 3.简单 的 within 切入点 4.完全量身订做的切入点 AOP@Work: 使用AspectJ 5检验库方面(15)时间:2011-09-07 IBM Wes Isberg5.应用接口或注释 1.在目 标代码中声明的接口或注释 2.在方面中声明的接口或注释 3.同时在目标代 码和方面中声明的接口或注释 6.对于注释或接口,声明是否不仅影响切入点 ,还要影响通知? 7.重写方面方法 8.配置方面委托(例如,通过工厂配置 ) 4.方面的风格 1.代码风格:AspectJ 对 Java 语言的扩展 2.注释风 格:以 Java 注释声明方面(方面必须为可选的) 3.XML 风格 (?):在 aop.xml 中声明具体方面(方面必须为可选的,且库方面中仅切入点可为抽象的 ) 5.部署问题 1.装入时织入(仅对可选方面有效) 2.装入时织入平台 变量(多重) 1.Java 1.3:自定义类加载程序,基于 WeavingURLClassLoader 2.Java 1.4:AspectJ 1.2.1 aj.bat 脚本,取代系 统类加载程序 3.Java 5:Java 5 装入时字节码织入器挂钩 6.理解库方面 1.核心组件 ■切入点 ■通知 ■类型间成员声明 ■类型间父声明 ■类型间错误声明 ■要重写的受保护方法 ■配置挂钩 2.numericity :方面实例化、联合、映射及切入点 3.类型安全:通知约束、mixin 接口、 AspectJ 5 参数化类型和方面 4.敏感度:明确;小型语言? 5.可维护性 1.可理解性 2.是在方面中还是在程序中跟踪程序变化?如何通知? 3. 检测错误: ■AspectJ 工具错误和 lint 消息 ■方面声明错误消息 ■ 测试代码 ■运行时不变量测试(产品代码中的失效实时处理) ■(见以下 关于健壮性的部分) 7.健壮性:系统发生变化时是否依然正常工作? AOP@Work: 使用AspectJ 5检验库方面(16)时间:2011-09-07 IBM Wes Isberg1.切 入点中有哪些假设? 1.这些假设有编译时测试的保障吗? 2.它们采用了严 密、防御性的编码方式吗? 3.切入点未被重写时,有通知吗?被重写时呢? 4.它们采用了严密、防御性的编码方式吗? 5.用于在抽象类中构成切入点 的 Scope 和 Trifecta 模板 2.系统中的新子类型会带来什么影响? 1.相 同的切入点或注释对它们起作用吗? 2.它们遵循同样的环境假设吗?同样的 异常处理?所有子类型都应按超类型处理吗? 看到这份一览表后,Zed 高兴 地吻了您一下!感觉很怪异,但这不失为一个好兆头。 库方面一览 库方面挑战游戏结束了,通过这个游戏简单介绍了简化库方面编写和部署的 方面库及 AspectJ 5 特性。表 8 列出了本文中介绍的方面,可通过下载源文件 获得这些方面。表 8 中说明了: 方面是必需的 (req) 还是可选的 (opt) 方面是用于开发 (dev) 还是用于 产品 (pro) 主题范围(兼所在文件夹) 指定具体方面需要的条件,即: within 表示形如 within(com.magickingdom..*) 的简单切 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |