GINA之Groovy的MOP動態特性

2021-08-29 11:52:36 字數 489 閱讀 4533

gina:groovy in action

groovy中metaclass在其動態特性中有著舉足輕重的作用,uml類圖如下[img]

gia中groovy方法呼叫描述如下[list=1]

[*]呼叫當前類的invokemethod方法實現(當然也可能是**/傳遞給metaclass)

[*]呼叫getmetaclass().invokemethod(…)方法

[*]呼叫metaclassregistry中已註冊的metaclass的invokemethod

[/list]實際的呼叫處理當然是很複雜了,不過也逃不出這三種情況。根據這些特徵,我們可以得到三個比較有用的好處[list]

[*][b]攔截(intercept)[/b]方法呼叫,這在aop處理方面很得心應手,比如記錄log等。

[*][b]偽造(pretend)[/b]乙個執行方法,比如markupbuilder將tag名稱作為方法呼叫就是利用此特性。

[/list]

Groovy探索之MOP 十二 方法的呼叫順序

groovy探索之mop 十二 方法的呼叫順序 我們知道,除了使用hook來攔截方法以外,我們還可以通過各種方式來實現方法。如,我們可以在類裡直接實現方法 我們可以通過expandometaclass在執行期內新增方法 我們還可以通過expandometaclass在執行期內單獨給乙個物件新增方法。...

Groovy學習之資料篇

groovy 官方 大部分問題看這裡的文件都可以搞定了,從入門到精通在這裡都可以完成。pleac groovy 大量的 示例,是perl cookbook的乙個groovy版本 groovy tutorial 非常好的乙個介紹groovy的ppt,可以快速的對groovy有乙個總體的了解,可以看作是...

Groovy探索之Builder 二

groovy探索之builder 二 在前面的部分,我以 markupbuilder為例介紹了如何使用builder,通過它,我們可以看過了dsl程式設計的威力。當然了,既然看到了builder功能的強大,我們就忍不住想自己建立乙個builder,來構建我們自己的dsl程式設計。在groovy語言中...