AOP@Work: 设计切入点来避免模式密集 - 编程入门网
方面应用于 Run:
将连接点封装为对象 在连接点上递归?这就是有趣的地方。在 AspectJ around 通知中,可以使用 proceed(..) 运行连接点的其他部分。为了实现递归,可以通过将 proceed(..) 调用封装在匿名类中来隐藏连接点的其他部分。为了在递归方法中传递,匿名类 应该扩展方法已知的包装器类型。比如,下面定义了 IClosure 包装器接口,将 proceed(..) 包装到 around 通知中,并把结果传递给 recurse(..) 方法:
使用 IClosure 可以结合 Command 模式和使用 proceed(..) 的通知的优点。 与 Command 类似,它也可以用新规定的参数在运行或重新运行中传递。与 proceed(..) 类似,它隐藏了连接点中其他上下文、其他低优先级通知和底层连 接本身的细节。它和连接点一样通用,比通知更安全(因为上下文更加隐蔽), 并且和 Command 一样可以重用。因为对目标类型没有要求,所以,与 Command 相比,IClosure 的结合性更好。 如果逐渐习惯于封闭 proceed(..),不必感到奇怪,对许多 Java 开发人员来 说,这仅仅是一种很常见的怪事。如果在连接点完成之后调用 IClosure 对象, 那么结果可能有所不同。 AOP@Work: 设计切入点来避免模式密集(14)时间:2011-09-04 IBM Wes Isberg可用性 RunComposite 方面将这种组合解决方案应用于 Run 类,只需要用 IComposite 接口标记该类,并定义 recursing() 切入点即可。但是,为了将组 件安装到树中,需要添加子类,这意味着某个组装器组件必须知道 Run 是带有子 类的 IComposite。下面显示了组件以及它们之间的关系:
您可能希望让 CompositeRun 方面也负责发现每次运行的子类(就像带配置的 组合那样),但使用单独的装配器意味着不必将 Run 组合(对于所有运行都是一 样的)与 Run 组合的特定应用(随着联系子类和特定 Run 子类的方式不同而变 )搅在一起。面向对象依赖性的规则依赖于稳定性的方向,特别是,(变化更多 的)具体的元素应该取决于是否要完全依赖于(更稳定的)抽象成分。按照这一 原则,上面的依赖性似乎不错。 结合性 与配置一样,组合通知(应用于测试用例时)应该优先于装置和结果报告。如 果配置影响到测试的确认,那么组合也应该优先于配置。按照这些约束, |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |