GINA之Groovy的MOP动态特性

  GINA:Groovy In Action
  Groovy中MetaClass在其动态特性中有着举足轻重的作用,UML类图如下
  GIA中Groovy方法调用描述如下
  1. 调用当前类的invokeMethod方法实现(当然也可能是代理/传递给MetaClass)
  2. 调用getMetaClass().invokeMethod(…)方法
  3. 调用MetaClassRegistry中已注册的MetaClass的invokeMethod
实际的调用处理当然是很复杂了,不过也逃不出这三种情况。根据这些特征,我们可以得到三个比较有用的好处
  • 拦截(intercept)方法调用,这在AOP处理方面很得心应手,比如记录log等。
  • 代理(relay)给其他对象实现,很象Wrapper,闭包就是利用这个特性,将方法代理给delegate。
  • 伪造(pretend)一个执行方法,比如MarkupBuilder将tag名称作为方法调用就是利用此特性。

你可能感兴趣的:(AOP,groovy,UML)