Groovy MOP实现mini-language 如传说中Java7.0的XML嵌入式语法

Groovy MOP实现mini-language 如传说中Java7.0的XML嵌入式语法,第1张

概述   作者:江南白衣         Groovy的Team Leader-- Guillaume Laforge说,MOP(Meta Object Protocol)是他最喜欢的Groovy特性。         MOP是对属性、方法进行拦截解释的简单机制,intercept 已经因为AOP而被大家熟悉。     Groovy的类都继承于GroovyObject,GroovyObject有get

   作者:江南白衣    

    Groovy的Team leader-- Guillaume Laforge说,MOP(Meta Object Protocol)是他最喜欢的Groovy特性。
   
    MOP是对属性、方法进行拦截解释的简单机制,intercept 已经因为AOP而被大家熟悉。
    Groovy的类都继承于GroovyObject,GroovyObject有get/setproperty()和invokeMethod()两个函数,当客户调用不存在的属性和方法时,就会交由这两个函数来处理,在Ruby里,这个方法被更贴切的命名为method_missing()。Groovy类可以通过重载这两个函数,加入自己的hook和behavior,比Java简单的多的实现Proxy和Delegator。

    而更重要的是,MOP函数可以充当领域语言解释者的角色,拦截一些存在于领域语言的而在Class里根本没有定义的属性、方法来进行解释,这就是Groovy里XML嵌入式语法的魔法根源。
    IBM DW有一篇专门的文章 :《PRACTICALLY mini-languages and MOPs Of Groovy:》
     比如如下的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说,It's an aspect of Groovy which makes the language very powerful,but rare are those who really kNow and use it. 

总结

以上是内存溢出为你收集整理的Groovy MOP实现mini-language 如传说中Java7.0的XML嵌入式语法全部内容,希望文章能够帮你解决Groovy MOP实现mini-language 如传说中Java7.0的XML嵌入式语法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1268987.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存