快速业务通道

AOP@Work: 使用方面的下几个步骤-学习建议之后 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
设计模式, 第 2 部分” ,获得有关使用方面和已重构的 Library Observer 模式来跟踪服务使用状况的 详细信息。

提供特性变体是方面在这个复杂阶段的用例。例如,考虑一个商 业软件供应商,它主要提供基于开放源码构建的产品线,并添加了增值业务支持 。行业报告 “Large-scale AOSD for middleware” 描述了 IBM 在该领域的动 机和经验(请参阅 参考资料)。

对于更小更具体的示例,不妨考虑一下使用计量来跟踪客户开票服务的使用 状况。

切点接口

首先介绍不使用面向对象的 Observer 模式时如何实现该要求。通过发布切 点供外部客户机使用就可以做到这一点,例如,方面仅定义了一个切点,供被计 量事件(比如使用标题)发生时使用:

aspect MeteringPolicy { declare parents: Playable implements Metered; public pointcut meteredUse(Metered metered) : titleUse(metered); pointcut titleUse(Metered metered) : this(metered) && ( execution(public void Playable+.play()) || execution(public void Song.showLyrics()) ); }

然后,代码的另一部分可以写入方面,以便在被计量的使用情况(比如,检 查信用、记录费用、立即开票、减少预付款计数器或启动定时器)发生时随时响 应。与传统的 Observer 实现不同,这里无需显式地分配事件。通常,发布切点 比传统的可扩展性机制更灵活,传统的可扩展性机制需要预定义的钩子方法,以 及用通常很笨重的方式来注册和分配给回调。以同样的方式,思考一下典型的面 向对象持久框架提供的事件前和事件后回调类型。例如,EJB 3.0 Java Persistence API 公共草案规范使用注释和回调方法支持下列七个生命周期事件 (每个事件都有两个版本),以便回调持久化的对象或一般******:

PrePersist

PostPersist

PreRemove

PostRemove

PreUpdate

Pos tUpdate

PostLoad

使用 AOP 实现,它们可以发布为四个可以随意组合和修 饰的切点。注意,在某些情况下,发布切点供外部使用需要以特殊方式对代码进 行结构化,从而暴露简单切点定义以表示实现中的一系列连接点。

特性变体

我认为计量示例最有趣的一面就是,针对不同上下文改变特性的能力。考虑 可能起作用的不同规则:

使用前检查信用

实时开票

批开票

使用前计量

每会话计量

跟踪 奖励

按用户计量使用情况

按付款来源计量使用情况(比如,匿名的储值卡 )

启用不同的营销活动

报价

启用不同联营机构的能力和跟踪

能够以 模块化方式改变配置计量的方式、应用计量的点、计量后的结果(包括开票以及 可能的暂停和/或拒绝访问)。基本上,可以将计量系统和相关能力打包为一个 随意 选项集合,以根据需要针对特定部署进行组合。在这种情况下,在单个面 向对象代码库中管理所有这些变体将非常困难。虽然面向对象编程允许模块化的 实现,但这需要巨大的模式密度,这会妨碍将来的扩展和改进,而且会越来越趋 向紧耦合。

AOP@Work: 使用方面的下几个步骤-学习建议之后(18)

时间:2011-09-07 IBM Ron Bodkin

编写可重用的方面

在多数情况下,构建好的方面库需要与构建好的库同样的技能和知识。特别 是,它需要域经验、好品味、技术(方面)经验,通常还需要系统编程知识(例 如,为了避免内存泄漏或支持线程安全的高并发度)。但是,比这些更重要的是 ,需要掌握一些新技能才能构建好的方面库:

一些以前的 AOP@Work 文章深入讨论过可重用的方面,特别是

“用 AspectJ 增强设计模式”

“用 AspectJ 进行性能监视”

“用 AspectJ 和 Spring 进行依赖项插入”

同样地,“使用 AspectJ 5 检验库方面” 讨论了编写可重用方面库时碰到 的问题。

可扩展性设计

首先,必须仔细计

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号