2

次のように定義されたシングルトンクラスがあります。

@Singleton
class MySingletonClass{
   ....
}

このシングルトン クラスを使用する別のクラスがありますが、このクラスは new 演算子を使用して作成する必要があります。したがって、コンストラクターインジェクションやセッターインジェクションなどは使用できません。

class MyClass {
   public void method() {
       // Uses instnace of MySingletonClass
   }
}

確かにこれのインスタンスを MyClass のコンストラクターに渡すことができますが、私のプログラムのコンテキストからはあまり良い設計ではありません。

もう 1 つの解決策は、MySingletonClass の静的な getInstance メソッドを作成して、プログラムのどこからでもインスタンスを取得できるようにすることです。しかし、Guice がこれに似たものをサポートしているかどうか知りたいですか? Guice はシングルトン インスタンスをどこでも取得できると確信しています。

どうもありがとう。

4

1 に答える 1

4

myClass が MySingletonClass を必要とする場合、これはそれらの間に明確な依存関係があることを意味すると思います。したがって、正しい解決策は、MySingletonClass のインスタンスを MyClass のコンストラクターに渡すことです。

コンストラクター注入は、依存関係を明示的にし、満たされていない依存関係を持つ MyClass の作成を防ぐため、最も望ましい注入方法の 1 つです。コンストラクターの注入が本当に気に入らない場合は、MySingletonClass のインスタンスを手動で注入できるセッター注入をいつでも使用できます。

于 2013-07-05T18:16:03.553 に答える