为了到达初始状态的解耦,Aspect进行协作,并没有削弱它们被部署到具体环境中的能力,这样一种基于模式的设计——我们称之为“控制roles”(controller roles)被引入。控制role是绑定到抽象控制器类(controller class)上的role类,这个控制器类声明了反映team基本特性的方法。

图6:控制role行为示意图
控制role包含绑定到控制器类方法的方法,这些方法托管了到相应team方法的调用。注意这里没有直接在多个实体之间的连接,从而去除了在程序启动时对交换引用(reference)的需要。同时这也意味着在Control Marker的子类实例中所有被继承方法都将被激活的team实例所拦截。这对于多个team来讲可要小心。这样,使用具体的Control Marker子类和Aspect进行相互联接,而将team的子类留给在具体的base应用中用来部署Aspect的做法成为了可能。
控制role模式是安全Aspect的可行性设计和实现的核心。当这些Aspect不是被明确地初始耦合在一起时,此时设计被允许在重用模块中实现Aspect之间的通讯。这样的系统是被限制的而不能看作是框架,但它展现了Aspect在问题域上的相互协作。
七、ObjectTeams的Java实现

在ObjectTeams的种子播撒到AOP的热土上,希望明年有好收成
ObjectTeams/Java作为一种java语言的扩展,用来解决在OO编程领域的两大基本问题:
1.OO编程方式不利于良性扩展。如果把类仅仅看作是把大型、复杂系统进行结构化的概念,那么它和实现、维护一个复杂的系统结构完全是两码事。像java package这样的命名空间对后者帮助并不大,因为这些结构没有任何的运行时语法。组件技术(包括OSGI bundle概念)“医治”了这个问题的一部分。而问题的剩余部分则需要两种技术——编程语言和组件模式,这正是ObjectTeams/Java的目标:实现一种能够满足以上要求的编程语言。
2.OO编程不能将横切关系模块化。AOP将发散、混乱的现象作为研究方向,它解决了OO编程方法在将系统结构化为多维上的“无能”。这在ObjectTeams/Java中被称为多视图的直接支持。
ObjectTeams/Java引入了两种新的类(模块)和用于处理上述两问题的三种新的关系。
team和role类:
team作为角色(role)类的聚合体成为容器(container),它是建立下面关系的基石:
◆包容关系(containment):在team和它的角色之间的包容关系与静态类和它的运行时实例之间的关系相同。包容被用于对由角色对象作保证的、并且不越出它们涵盖的team实例的范围进行强力封装。包容是扩展和内嵌的基础。
◆继承关系:为了支持复杂team类的扩展,继承关系被递归地应用在它所包含的角色上。通过应用现代类型理论(虚对象和家族体系),team继承关系将框架技术推进了一大步,它使对抽象应用的实例化更加容易。
◆适配关系:这种最强大的关系使team能适配一组现存类或者另一个team。适配关系把基于角色的语言和加入点(join point)拦截器组合在一起,这就像AOP所做的一样。这样就可顺畅地解决在维护team模块扩展时的横切问题。
下面短小的tutorial将展示OT/J语言兼顾交互式教学模式和小型在线演示。它使用并演示了Object Teams开发工具 ,这个开发工具是基于Eclipse JDT的OT/J扩展。OT/J语言和其工具被成功用在了一些个案研究中(就像使用OT/J开发工具本身一样)。OT/J初学者将学习到许多基本的理论和使用team、角色和它们的关系来建立真实世界应用的模式。
对这种交互角色的汇聚问题早在多年前就引起许多研究人员和开发者关注。比如,T.Reenskaug在1996年发表的OORAM(Object-oriented role analysis and modeling)方法,并已被面向对象社区所接受。不幸的是,此时没能出现一种可直接将角色模式编写为程序的合适的编程语言。OT/J填补这一空白, 它允许开发者使用非常直观的角色和基于分析下层实现来获得精确的聚合。
八、作者简介

Stephan Herrmann先生
从1997年,Stephan Herrmann先生开始在大学进行涉及OO软件开发的教学。并于2002年完成了他的PhD:基于多视图的原模式软件工程环境。目前,他的研究工作关注在2001年他开始开发的OT/J语言。他是TOPPrax (5家机构联合研究项目)的领导者,此项目致力于实现如OT/J这样的“现代面向Aspect语言”的实际应用。
九、相关资源
Modular programming beyond classes with ObjectTeams/Java and the OTDT
(责任编辑 火凤凰 sunsj@51cto.com TEL:(010)68476636-8007)
| 共5页: 上一页 [1] [2] [3] [4] 5 | ||
|
|
|||
| · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 · 充电计划之热门IT认证.. · 51CTO技术自测 挑战自.. · CISSP认证成长之路 · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 |
· 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 · RIP路由协议专栏 · MPLS路由协议专栏 · OSPF路由协议专栏 · 思科路由器产品 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · Solaris 10 配置管理 · C#技术开发指南 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·拯救系统管理员 ·美国选民:我为什么选布什 |
·VMware公司中文命名挑战赛 ·我们真缺乏创新吗? |
| ·J0ker的CISSP之路:复习-.. ·J0ker的CISSP之路:复习-I.. |
·9月第3周安全回顾 内网安.. ·教你几招识别和防御Web网.. |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· 费力不讨好 数据中心主.. · AMD Phenom三核处理器解.. · 51CTO主编推荐经典专题 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |