プロが教えるわが家の防犯対策術!

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

A 回答 (1件)

使ったことはないのですが、あるインターフェースを与えられたときに、その実装クラスを引っ張ってくるのに使えるみたいですね。



dependency injection, factory patternあたりで検索すると、なんでそんなことが必要なのか情報が見つかるかもしれません。

簡潔に書けば、このようなツールを提供する意図は、オブジェクトの生成(や削除)を隠蔽化するところにあると思います。

例えば、アイロン(Iron)というインターフェースがあるプログラムで、Iron iron = new ToshibaIron();と書かれていたら、Sanyoのアイロンを使いたくなったらnewしてるところを全部書き換えないといけません。Discoveryを使うと、java -DIron=ToshibaIron Mainのようなことができます。

また、アイロンが熱くなるまでかなり電気代がかかることから、5台のアイロンを余熱して、複数のコンポーネント間で使いまわしたいということになれば、また大変な作業になります。

しかし、あらかじめ((Iron)discover.newInstance(Iron.class)).makeMySuitLookGreat();なんて書いておけば、どういう風にインスタンスを使いまわそうが、ここのコードは変更する必要がなくなり、アプリケーションが変更に強くなります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/07/12 19:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!