ユーザーが有効または無効にできる機能の開発を進めています。 これは別のモジュールで実装され、いくつかのスレッドといくつかのシングルトンを作成します。 私は別のモジュールを持っているので、後でそれを別のプロセスで実行しようとしているので、別のguiceインジェクタを使用しました。 だから私は、インジェクタを作成し、機能インタフェースを実装するクラスを返すファクトリメソッド(それは3つのインターフェイスを持っている)機能を正しく作成してシャットダウンする方法
public class FeatureFactory {
private Injector injector;
public FeatureClass open() {
injector = createInjector();
return injector.getInstance(FeatureClass.class);
}
}
public class FeatureClass implements InterfaceA, InterfaceB, InterfaceC {
}
質問があります。
- が新しいインジェクターを作成することをお勧めしますこの場合?私は全体のフィーチャーが別のモジュールに入っていることを意味しますか? アイデアはそれらを切り離し、新しい機能guiceモジュールをフィーチャーAPIの一部として持たないことでした。そうでない場合、よりよいアプローチは何でしょうか?
- インターフェイスの代わりにフィーチャクラスを返すことは、良いにおいをしません。 これはユーザーに実装について知らせる これをどのように克服するのですか? 現在、アプリケーションguiceモジュールを使用して、インターフェイスをFeatureClassにバインドしました。
- どのように機能を閉じ、すべてのクラスをガベージコレクションしましたか?私が言ったように 、機能が開かれると、いくつかのシングルトンとスレッドが作成されます。 インジェクタフィールドをnullにすると、すべてがガベージコレクションされますか?
あなたの最初の質問は、[ヘルプ/トピック]に従って広すぎると主に意見に基づいていますので、それに応じてあなたの質問を[編集]してください。 –