• ベストアンサー

Commons-Discovery.jarとは?

Commons-Discovery.jarとは一体どういう働きをしているのでしょうか? 公式http://commons.jakarta.jp/discovery/を読んだのですが クラスのインスタンス化やシングルトン(ファクトリ)クラスのライフサイクルの管理…という記述と 三行目以降の所与のJavaインターフェースを実装するクラスの場所を確認します…という記述の関連性が分かりません。 一体Commons-Discoveryはどういう働きをするものなのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • foxa-gogo
  • ベストアンサー率44% (38/85)
回答No.1

使ったことはないのですが、あるインターフェースを与えられたときに、その実装クラスを引っ張ってくるのに使えるみたいですね。 dependency injection, factory patternあたりで検索すると、なんでそんなことが必要なのか情報が見つかるかもしれません。 簡潔に書けば、このようなツールを提供する意図は、オブジェクトの生成(や削除)を隠蔽化するところにあると思います。 例えば、アイロン(Iron)というインターフェースがあるプログラムで、Iron iron = new ToshibaIron();と書かれていたら、Sanyoのアイロンを使いたくなったらnewしてるところを全部書き換えないといけません。Discoveryを使うと、java -DIron=ToshibaIron Mainのようなことができます。 また、アイロンが熱くなるまでかなり電気代がかかることから、5台のアイロンを余熱して、複数のコンポーネント間で使いまわしたいということになれば、また大変な作業になります。 しかし、あらかじめ((Iron)discover.newInstance(Iron.class)).makeMySuitLookGreat();なんて書いておけば、どういう風にインスタンスを使いまわそうが、ここのコードは変更する必要がなくなり、アプリケーションが変更に強くなります。

nagaia
質問者

お礼

大変参考になりました! ありがとうございます^^

すると、全ての回答が全文表示されます。

関連するQ&A