Chinaunix首页 | 论坛 | 博客
  • 博客访问: 484373
  • 博文数量: 1496
  • 博客积分: 79800
  • 博客等级: 大将
  • 技术积分: 9940
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 13:22
文章分类

全部博文(1496)

文章存档

2011年(1)

2008年(1495)

我的朋友

分类:

2008-09-09 13:30:40


  Groovy的Team Leader-- Guillaume Laforge说,MOP(Meta Object Protocol)是他最喜欢的Groovy特性。
  
  使用MOP可以简单的对属性和方法进行拦截和解释,intercept 已经因为AOP而被大家熟悉。在Groovy里,通过重载GroovyObject的get/setProperty()函数和invokeMethod()函数,可以加入自己的hook和behavior,比简单的多的实现proxy和delegator。
  
  而更重要的是,MOP函数可以充当领域语言解释者的角色,拦截一些在Class里根本没有定义的属性、方法来进行解释,这就是Groovy里XML语法的魔法根源。
  
  比如如下的xml
  
  庄表伟
  
  可以用groovy这样访问
  
  println node.book.writer.text()
  
  node类当然没有book,writer这样属于领域语言的属性,但通过重载getPropety(String name)函数,node类可以把对book,writer属性的访问,转换成相应DOM节点的访问。
  
  实现请参看org.codehaus.groovy.sandbox.util.XMLList类的public Object getProperty(final String elementName)函数。
  
  Guillaume Laforge说,It's an aspect of Groovy which makes the language very powerful, but rare are those who really know and use it.
【责编:admin】

--------------------next---------------------

阅读(89) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~