用AOP增强契约:用AspectJ为Java软件开发加入契约式设计 - 编程入门网
是实现了特定接口的 Java 类,“桥梁” 是 AspectJ 方面。这个方面 指 定了应用契约的特定点和应用契约所需要的逻辑,如图 2 所示。
图 2. 以操作图表示的契约式设计逻辑 图 2 中的逻辑图对于所有契约都是相同的,所以可以开发一个指定它的公共 抽象方面。图 3 显示了这个解决方案的类和方面图: 图 3. 契约检查器系统的基本组件 AbstractContract 方面指定在 图 2 中的操作图中声明的控制逻辑。它在程 序的执行中留下了未表示的(即抽象的)点,(由 ContractManager 接口的实 现 定义的)契约将应用到这里。 ConcreteContract 方面(扩展 AbstractContract 方面) 负责: 通过 targetPointcut pointcut 指定进行契约检查的准确位置。 通过 getContractManager() 方法指定负责检查契约的类。 用AOP增强契约:用AspectJ为Java软件开发加入契约式设计(4)时间:2011-09-07 ibm Filippo Diotalevi包含检查应用程序与外部模块之间契约的代码的类是 ContractManager 接口 的一个实现。清单 1 所示的 ContractManager 是一个定义契约检查类的基本行 为的简单 Java 接口: 清单 1. ContractManager 接口
ContractManager 接口为要检查的每一种断言定义了不同的方法。每一个方 法 可以通过 thisObject 参数访问 Java 对象,该对象调用要保证其契约的函数。 前置条件和后置条件方法可以看到作为函数参数 ( args ) 传递的值。只有后 置条件方法可以通过 returnValue 参数接收最终的返回值。通过结合使用这三 种 方法,可以检查几乎所有常见的条件。 AbstractContract 方面执行进行契约检查所需要的控制逻辑。这个逻辑是在 around():targetPointcut() advice 中表述的。清单 2 显示了 AbstractContract 方面: 清单 2. AbstractContract 方面
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |