メソッドセットでのコンポーネント探索
バインドメソッドの設定がメンドイ件について、指定したメソッド(セット)を持つコンポーネントを探してくる機能がコンテナにあれば良いんでは、と思った。
機能
- コンテナに登録済みのコンポーネントをスキャンして、指定したメソッドを持つコンポーネントを返す。(最初の一つ、またはすべてを配列で取得できる)
- メソッドは複数設定でき、両方を実装するコンポーネントがヒットする。
APIイメージは次のような感じ。「continer.types.has()」でメソッドセット(Typeと呼ぶことにする)を作れるようにしてみた。
// コンテナ var c = container.Container( function( binder) { ... 略 } ); // メソッド "onFoo", "onHoge"の両方を持つコンポーネントを探す条件 var type = continer.types.has( ["onFoo","onHoge"] ); var fooHoge = c.get(type); // 条件にマッチする最初のコンポーネントを得る。 var fooHoges = c.gets(type); // 条件にマッチするすべてのコンポーネントを得る。 // メソッド "onFoo" または "onHoge"を持つコンポーネントを探す条件 var type = continer.types.hasAny( ["onFoo","onHoge"] ); var fooOrHoge = c.get(type); var fooOrHoges = c.gets(type); // ネストもできる。"onVer"と、"onFoo"or"onHoge"のいずれかを持つことを示す。 var type = continer.types.has([ continer.type.hasAny( ["onFoo","onHoge"] ), "onVar" ]);
JavaScriptにはClassやインターフェイスがないので、名前を元にコンポーネントの取得やインジェクションをするようにしていたけど、この仕組みがあればTypeでも関連づけができるようになるのでちょっと便利になるかも。