私は、そのコンストラクタをprivateと宣言してシングルトンオブジェクトを作成する方法を知っています。しかし私の疑問は、すべてのメソッドと変数を静的に宣言することによってシングルトンオブジェクトを作成できるかどうかです。もしそうなら、私たちはどのような課題に直面しますか?すべてのメソッドと変数を静的に宣言することでシングルトンオブジェクトを作成できますか?
答えて
クラスstatic
のすべてのメソッドと変数を宣言しても、そのクラスの任意の多くのインスタンスを作成できます。これらのオブジェクトは、継承されたメソッドと変数のみを持ちます。しかし、新しく宣言されたメソッドと変数はすべてグローバルです。これはシングルトンオブジェクトに非常によく似ていますが、同じではありません。
など。コレクションインターフェイスを実装するシングルトンクラスが1つしかない場合よりも、しかし、コレクションインスタンスを必要とするどのメソッドにも自由に与えることができます。クラス内のすべてを静的にすることは不可能です。
クラスのメンバーを静的にするということは、クラスをクラスではなく名前空間として使用することを意味します。
すべての変数とメソッドを静的に宣言することによって、実際にはオブジェクトではなくになります。
グローバル変数以上のcプログラムに似たとなります。シングルトンパターン以上の場合 - 非常にOOPスタイルではありません!
また、このクラスではインターフェイスを実装することができなくなります[スタティックメソッドでオーバーライドされていないことを忘れないでください]。
これを行うと、基本的なことは変わりませんが、好きなだけ多くのクラスのインスタンスを作成できます。あなたが任意のインスタンスを作成しない場合でも
、属性が残ります:静的な要素がクラス、ないオブジェクトのプロパティですので。
ほとんどすべてのメソッドが静的であるため、シングルトンが必要ない場合があります。つまり、シングルトンはどのオブジェクトにも状態を保持する必要はありません。 。
シングルトンは、基本的なバックエンドサービスに関する情報を保持するConnectionPoolのシングルトンなどの静的メソッドを提供するステートフルオブジェクトです。
私は、メソッドを実行するために共有状態を保持する必要があるかどうかを判断することをお勧めします。あなたの実装を推進します。
- 1. PHP - 静的メソッドと非静的メソッドを宣言できますか?
- 2. Javaの非静的クラスで静的変数を宣言する
- 3. なぜすべての変数を静的変数として宣言しないのですか
- 4. JPA静的メタモデルクラスのメンバ変数を最終的に宣言できますか?
- 5. メソッドが静的キーワードと宣言されていない場合、クラス内でPHP関数を静的に呼び出すことができますか?
- 6. どこで静的変数を宣言する必要がありますか?
- 7. 宣言変数とセット変数でストアドプロシージャを作成する
- 8. WPFコントロールで静的または非静的としてEventHandlerを宣言する
- 9. ビュー内でビューモデルを静的リソースとして宣言することはできますか?
- 10. jspページで静的変数(カウンタ)を宣言するには
- 11. 静的変数を宣言するときの出力は何ですか?なぜですか?
- 12. 静的クラス関数[C++]で 'using'宣言を使用することはできますか?
- 13. Java RMIのレジストリオブジェクトとインタフェースオブジェクトを静的にグローバルに宣言できますか?
- 14. C++静的インラインでテンプレート関数を宣言することは理にかなっていますか?
- 15. Javaでは、静的メソッド自体の内部で宣言された変数は静的ですか?
- 16. 他の静的プロパティを含むときに静的プロパティを宣言する
- 17. 「関数宣言」を「関数宣言」として定義することはできますか?
- 18. Ext.Componentをグローバル変数として宣言できますか?
- 19. グローバル変数として宣言することなく、Pythonでグローバル変数を使用できますか?
- 20. Javascriptで静的変数を宣言する方法
- 21. Delphi 2009で静的変数を宣言する方法は?
- 22. 変数は変数を宣言することなく動作しますか?
- 23. 変数をstd :: type_infoから宣言することはできますか?
- 24. AVAudioPlayer()を変数宣言で作成し、オプション/アンラッピングを避けることはできますか?
- 25. メソッドをJavaの静的型引数で宣言できますか?いいえ、なぜですか?
- 26. すべてのメソッドとクラス変数が静的なのはなぜですか?
- 27. C++ヘッダーで静的変数を宣言して定義しますか?
- 28. ZendFramework - 私はすべてのコントローラとモデルでこれを利用できるように、静的なグローバル定数をどのように宣言しますか?
- 29. 静的初期設定子の後に静的変数を宣言する
- 30. 多くの関数で使用される変数をメンバ変数として宣言すべきですか?