せっかくなので、動的にモックを作ってみる。
Groovyスクリプト
import pico_nano.* class MyBaz extends Baz { def void func() { println "MyBaz#func()" } } pico = builder.container(parent:parent) { component(class:Foo) component(class:Bar) component(class:Zoo) //component(class:Baz) component(class:MyBaz) }
実行結果
Foo#func() Bar#func() MyBaz#func() Zoo#func()
所感
インターフェースを作らないのは、はじめ違和感があったけど、アプリの見通しはよい。
コンテナを作成する速度が、Rhinoと比べると若干遅い気はした。実施にアプリ作るんだったら、コンテナキャッシュしといて、スクリプトが更新されたタイミングで再作成かな?
スクリプトの可読性はRhinoよりよいと思う。
asmとantlrが必要なのは、まあ仕方ないか。
気づいたこととか
- readerってGroovyContainerBuilder(ScriptedContainerBuilder)内でclose()されてんのね。
- voidを書かないとオーバーライドされなかった > def void func() {...}