使用mop可以简单的对属性和方法进行拦截和解释,intercept 已经因为aop而被大家熟悉。在groovy里,通过重载groovyobject的get/setproperty()函数和invokemethod()函数,可以加入自己的hook和behavior,比java简单的多的实现proxy和delegator。
而更重要的是,mop函数可以充当领域语言解释者的角色,拦截一些在class里根本没有定义的属性、方法来进行解释,这就是groovy里xml嵌入式语法的魔法根源。
比如如下的xml
<shop><book name="foo"><writer>庄表伟</writer></book></shop>
可以用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说,its an aspect of groovy which makes the language very powerful, but rare are those who really know and use it.
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!


