前回の isXxxx() メソッドに引き続き、今回は AbstractFactory クラスの onXxxx() メソッドを見ていきます。 onXxxx() メソッドは(気持ち的には)イベント・ハンドラのようなメソッドで、ビルダー設定時やビルド時に起こるイベントに対して処理を記述します。 ただし、イベント・ハンドラと言っても Griffon のように独自のイベントを起こしたりすることはできなくて、onXxxx() メソッドの呼ばれる順序は FactoryBuilderSupport によって定められています。 従って、独自の Factory クラスを実装する際には、ある程度 onXxxx() メソッドの呼ばれる順序を把握しておく方がよいでしょう。
onXxxx() メソッド
Factory インターフェースに定義されている onXxxx() メソッドには以下のようなものがあります:
メソッド | 説明 |
---|---|
onFactoryRegistration() | FactoryBuilderSupport オブジェクトに Factory オブジェクトが登録されたときに呼ばれる |
onHandleNodeAttributes() | ノードの属性を処理する際に呼ばれる(子ノードの処理の前) |
onNodeChildren() | 子ノードを処理する際に呼ばれる |
onNodeCompleted() | 子ノードが構築された後に呼ばれる |
onXxxx() メソッドの呼ばれる順序
onXxxx() メソッドの呼ばれる順序は把握しておく方がよいでしょう。 onXxxx() メソッドに加えて、isXxxx() メソッドや setParent() / setChild() メソッドも一緒に載せてます:
- ビルダー設定時
- onFactoryRegistration()
- ビルド時
- newInstance()
- onHandleNodeAttributes()
- setParent()
- (親ノードの setChild())
- isLeaf() == true なら
- isHandlesNodeChildren() == true なら onNodeChildren()
- (子ノードの setParent())
- setChild()
- onNodeCompleted()
最初、setParent() の呼び出し順を間違えてました(修正済)
前回も書きましたが、isHandlesNodeChildren() が false を返すと onNodeChildren() メソッドは呼ばれません。 ただし、子ノードの構築は行われます。

Groovy for Domain-specific Languages
- 作者: Fergal Dearle
- 出版社/メーカー: Packt Publishing
- 発売日: 2010/05/30
- メディア: ペーパーバック
- この商品を含むブログ (9件) を見る

Beginning Netbeans” Ide for Groovy, Grails and Griffon
- 作者: Geertjan Wielenga
- 出版社/メーカー: Apress
- 発売日: 2011/05/30
- メディア: ペーパーバック
- クリック: 2回
- この商品を含むブログ (3件) を見る