2012-01-09 7 views
0

私は、そのコンストラクタをprivateと宣言してシングルトンオブジェクトを作成する方法を知っています。しかし私の疑問は、すべてのメソッドと変数を静的に宣言することによってシングルトンオブジェクトを作成できるかどうかです。もしそうなら、私たちはどのような課題に直面しますか?すべてのメソッドと変数を静的に宣言することでシングルトンオブジェクトを作成できますか?

答えて

0

クラスstaticのすべてのメソッドと変数を宣言しても、そのクラスの任意の多くのインスタンスを作成できます。これらのオブジェクトは、継承されたメソッドと変数のみを持ちます。しかし、新しく宣言されたメソッドと変数はすべてグローバルです。これはシングルトンオブジェクトに非常によく似ていますが、同じではありません。

など。コレクションインターフェイスを実装するシングルトンクラスが1つしかない場合よりも、しかし、コレクションインスタンスを必要とするどのメソッドにも自由に与えることができます。クラス内のすべてを静的にすることは不可能です。

クラスのメンバーを静的にするということは、クラスをクラスではなく名前空間として使用することを意味します。

0

すべての変数とメソッドを静的に宣言することによって、実際にはオブジェクトではなくになります。
グローバル変数以上のcプログラムに似たとなります。シングルトンパターン以上の場合 - 非常にOOPスタイルではありません!

また、このクラスではインターフェイスを実装することができなくなります[スタティックメソッドでオーバーライドされていないことを忘れないでください]。

0

これを行うと、基本的なことは変わりませんが、好きなだけ多くのクラスのインスタンスを作成できます。あなたが任意のインスタンスを作成しない場合でも

、属性が残ります:静的な要素がクラス、ないオブジェクトのプロパティですので。

0

ほとんどすべてのメソッドが静的であるため、シングルトンが必要ない場合があります。つまり、シングルトンはどのオブジェクトにも状態を保持する必要はありません。 。

シングルトンは、基本的なバックエンドサービスに関する情報を保持するConnectionPoolのシングルトンなどの静的メソッドを提供するステートフルオブジェクトです。

私は、メソッドを実行するために共有状態を保持する必要があるかどうかを判断することをお勧めします。あなたの実装を推進します。

関連する問題