Pico + Nano + Groovy その2

せっかくなので、動的にモックを作ってみる。

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() {...}