私はInversion of Controlに、具体的にはGuice
とRoboGuice
をAndroid用に使用しています。質問があります。コントロールの逆転新しいオブジェクトの作成
私はリソース(本質的にXMLまたはJSONストリングです)を返すメソッド呼び出しを持っています。
public Resource getResource(){
// Some implementation details that call a web service and throw the result in a string...
String resource = ........
}
Resource
クラスは、本当にただラップString
あるので、私はそれはそれはResource
オブジェクトの本質的な部分であるため、コンストラクタでそれを渡すために意味を成していた考え出しました。
public class Resource{
Resource(String theXMLorJSON){
...
}
}
質問のカップル:
- にはどうすればいい
getResource
呼び出しで新しいResource
を構築するのですか?私はIoCを使い、new
メソッドにコールしないと思うだろう。 - 他のクラスがコンストラクタ内で
Resource
を受け取った場合、String
の作成時に、Guice
コンテナを使用して構築するにはどうすればよいでしょうか?私はちょうどsimilar questionを尋ね、Guice
を使ってこれを扱う特定の方法があると信じています。
ありがとうございます!
お返事ありがとうございました。私はまた、アーリントン、バージニア州、btwです。 – skaz
あなたが気にしない場合は、さらに2つの質問があります。 1)あなたがリンクしているページの "手作りの工場"セクションの例が、単に「CreditService」の代わりに「プロバイダ」になるのはなぜですか? 'CreditService'だけを注入できませんでしたか? 2)コンストラクタで 'Resource'を取る' ResourceUser'クラスと、 'Resource'コンストラクタが' String'クラスを持っている場合、Guiceで 'ResourceUser'を設定するにはどうすればいいですか?残念ですが...。 – skaz
これは、工場が 'CreditService'のスコープを変更しないようにするためです。たとえば、「CreditService」はWebアプリケーションでリクエストスコープにすることができるため、ファクトリが呼び出されるたびに正しいインスタンスが得られるようにする必要があります。すべての依存関係がシングルトンの場合、それらを直接注入することはできますが、工場ではそれを想定してはいけません。 [Injecting Providers](http://code.google.com/p/google-guice/wiki/InjectingProviders)を参照してください。 – ColinD