私は、そのコンストラクタをprivateと宣言してシングルトンオブジェクトを作成する方法を知っています。しかし私の疑問は、すべてのメソッドと変数を静的に宣言することによってシングルトンオブジェクトを作成できるかどうかです。もしそうなら、私たちはどのような課題に直面しますか?すべてのメソッドと変数を静的に宣言することでシングルトンオブジェクトを作成できますか?
答えて
クラスstatic
のすべてのメソッドと変数を宣言しても、そのクラスの任意の多くのインスタンスを作成できます。これらのオブジェクトは、継承されたメソッドと変数のみを持ちます。しかし、新しく宣言されたメソッドと変数はすべてグローバルです。これはシングルトンオブジェクトに非常によく似ていますが、同じではありません。
など。コレクションインターフェイスを実装するシングルトンクラスが1つしかない場合よりも、しかし、コレクションインスタンスを必要とするどのメソッドにも自由に与えることができます。クラス内のすべてを静的にすることは不可能です。
クラスのメンバーを静的にするということは、クラスをクラスではなく名前空間として使用することを意味します。
すべての変数とメソッドを静的に宣言することによって、実際にはオブジェクトではなくになります。
グローバル変数以上のcプログラムに似たとなります。シングルトンパターン以上の場合 - 非常にOOPスタイルではありません!
また、このクラスではインターフェイスを実装することができなくなります[スタティックメソッドでオーバーライドされていないことを忘れないでください]。
これを行うと、基本的なことは変わりませんが、好きなだけ多くのクラスのインスタンスを作成できます。あなたが任意のインスタンスを作成しない場合でも
、属性が残ります:静的な要素がクラス、ないオブジェクトのプロパティですので。
ほとんどすべてのメソッドが静的であるため、シングルトンが必要ない場合があります。つまり、シングルトンはどのオブジェクトにも状態を保持する必要はありません。 。
シングルトンは、基本的なバックエンドサービスに関する情報を保持するConnectionPoolのシングルトンなどの静的メソッドを提供するステートフルオブジェクトです。
私は、メソッドを実行するために共有状態を保持する必要があるかどうかを判断することをお勧めします。あなたの実装を推進します。
- 1. PHP - 静的メソッドと非静的メソッドを宣言できますか?
- 2. 宣言変数とセット変数でストアドプロシージャを作成する
- 3. どこで静的変数を宣言する必要がありますか?
- 4. WPFコントロールで静的または非静的としてEventHandlerを宣言する
- 5. ビュー内でビューモデルを静的リソースとして宣言することはできますか?
- 6. Ext.Componentをグローバル変数として宣言できますか?
- 7. 静的クラス関数[C++]で 'using'宣言を使用することはできますか?
- 8. C++静的インラインでテンプレート関数を宣言することは理にかなっていますか?
- 9. Javaでは、静的メソッド自体の内部で宣言された変数は静的ですか?
- 10. Javascriptで静的変数を宣言する方法
- 11. Delphi 2009で静的変数を宣言する方法は?
- 12. 変数は変数を宣言することなく動作しますか?
- 13. 多くの関数で使用される変数をメンバ変数として宣言すべきですか?
- 14. C++ヘッダーで静的変数を宣言して定義しますか?
- 15. ZendFramework - 私はすべてのコントローラとモデルでこれを利用できるように、静的なグローバル定数をどのように宣言しますか?
- 16. 静的クラスを変数に割り当てることはできますか?
- 17. 静的メソッドと静的変数のjava
- 18. @MappedSuperclassesで静的メソッドを作成できますか?
- 19. PHPの静的宣言動作を取得できません
- 20. 全体の宣言をLessで変数値として保存することはできますか?
- 21. C++/CLIで静的関数を宣言/書き出すことは可能ですか?
- 22. ヘッダファイルにメソッドを宣言することはできませんか?
- 23. mutexを静的ファイルスコープ変数として宣言するのは安全ですか?
- 24. メインメソッドから変数を宣言することとメインメソッドから内部変数を宣言することの違いは何ですか?
- 25. すべてのPHPクラスのコンストラクタで変数をグローバルに宣言しなくても、変数をグローバルに表示させることはできますか?
- 26. mの静的宣言は非静的宣言に従います
- 27. 一般的に宣言された変数をグローバル変数として宣言することに利点はありますか?
- 28. 静的メソッドと変数
- 29. コード・イグナイターでは、グローバル変数はどこで宣言すべきですか?
- 30. 非静的定数データメンバーをコーディング中にクラス内に宣言することは適切ですか?