AOP@Work: AOP和元数据:完美的匹配,第2部分-用元数据实现多维接口 - 编程入门网
是考虑如何表示方法的状态 修改特征。
抽象注释类型的更多例子 让我们再讨论几个注释类型的例子。考虑使用 WaitCursor 作为注释类型来模 块化等待游标的管理,这类管理是围绕具有这种类型的注释实例的所有方法进行 的。可以省略的代码非常多(特别是当考虑每个方法所需要的 try/finally 块时 )。不过,还有使用更能描述功能的注释类型的多种可能。考虑另一种注释类型 Timing,它类似于 mean、 variance 和 distribution 这样的属性,如下所示: @Timing(mean=5, variance=0.34, distribution=Gaussian) 可以用几种方法消费这个注释: 进行速率单调性分析(Rate Monotonic Analysis,即 RMA,请参阅参考资料 )。 提供运行时间长的操作的反馈(如等待游标)。 当然,这种高度特定 的功能表达只在拥有定性的计时数据时才适合。否则,可以使用定性信息。例如 ,注释实例可以是 @Timing(value=Long)。这种方案遵守了描述连接点功能的原 则,并提供了下面这些有意义的可能性: 进行选择,只对那些带有某种计时功能的方法进行分析。 检查计时信息的自我一致性,如查找在标记为 Large 值的方法的计算路径中 出现的、用 ExtraLong 值标记的方法。 考虑另一个例子,在该例中,方法是 用 RetryOnFailure 注释标记的,这样一个方面就可以再次尝试失败的服务。如 果使用 Idempotent 作为注释类型(表示对同一操作的多次调用会产生同样的结 果),那么不仅可以重试失败的操作,而且还可以同时执行多个服务,如果需要 这样的优化的话。 最后,考虑上面的授权和身份验证的例子。权限属性可以是所需权限的直接表 达。对这一概念的更好表述是指定对操作进行分类的一个属性。然后,方面就可 以将分类映射到实际的权限,这些权限在不同的系统之间可以发生改变。例如, 一个系统可能无法从访问控制的角度区分读写操作,而另一些系统则可以对此进 行区分。比这更好的一种方法是使用业务相关的注释类型,如 AccountModification、CustomerInformationAccess 和 Purchase。包含这些类 型的注释的程序元素不仅能被授权和身份验证方面所捕获,而且还可被其他实现 捕获,比如隐私策略增强方面。不过,从头创建这种类型很复杂。一种实用方法 是从一个可以工作的入门 级的抽象开始重新构建这种类型,以获得更好的应用。 AOP@Work: AOP和元数据:完美的匹配,第2部分-用元数据实现多维接口(9)时间:2011-09-04 IBM Ramnivas Laddad智慧来源于经验 如果正在实现横切关注点,并且不能遵循上面的准则,那么也可以使用面向方 面的解决方案,即使这意味着“标记”每一个需要一个通知的方法。使用带标记 的 AOP 至少实现了某种模块化,并使您具有获得某种程度的修改实现的自由度。 标记方法要求使用元数据驱动的切入点编写方面,然后用在切入点中使用的注 释类型来注释程序元素。这种用法类似于使用美化了的宏功能。虽然通过注释类 型,代码使核心元素与方面之间有了强烈的依存关系,但是这样可以节省很多代 码(通过将共同代码转移到一个方面或者通知中,而不是将它放到每一个方法中 )。所得到的模块性还有助于限制对方面自身实现的关注点的修改。 智慧来源于经验。即使从标记方法开始,您也很快就会了解更深入的内容,并 相应地对实现进行修改(通常是重新构建)。还记得您用 OOP 最初做的几个设计 吗?利用您现在掌握的知识,重新评价最初的 OOP 设计,您可能会发现它们没有 达到应有的抽象程度,尽管这种设计仍然好于纯粹的过程式方法。与此类似,在 AOP 中第一次使用元数据可能会有一个从 OOP 到 AOP 的类似的短暂过程。 元数据和遗忘 如果不考虑元数据对遗忘的影响,对元数据和 AOP 的讨论就不能说是完整的 ,尽管在实践中真正重 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |