すべての静的メンバー/メソッドを持つクラスは、シングルトンデザインパターンの一種ですか?特にそのようなクラスを持っていることには何らかの欠点がありますか?詳細な説明が役立ちます。静的クラスとシングルトン
答えて
この種類のクラスはmonostateとして知られています。これはシングルトンとは多少異なります。
なぜシングルトンではなくモノスタットを使用するのですか?パターン上の彼らのoriginal paperでは、ベル&クロフォードは(私が言い換え)3 reasonns勧め:
- より自然なアクセス構文
- をシングルトンは
からIを継承しやすい名前
ロバートC.マーティンは、モノステートパターンとシングルトンパターンの違いについて、何度か前にarticleと書いています。
記事によれば、JavaではMonostateの破壊は保証されていますが、JVM間を渡すことはできません.C++に関連する違いはありますか? –
他の変数とまったく同じです。動的に割り当てられている場合は、互換性のあるデアロケータで割り当てを解除する必要があります。静的記憶域にある場合(GOTW/XC++、IIRCを参照)、プログラムは破棄されて終了しますが、依存関係を実装する方法はありません。 –
依存関係の側面に関しては、A.Alexandrescuのloki(MC++ Dからの)シングルトンとACEシングルトンは依存関係を指定することを許可します。ところで、彼らは両方とも非介入シングルトンです。 –
シングルトンの場合、すべてのコンストラクタはプライベートでなければならないため、関数を介してのみアクセスできます。しかし、あなたはそれにかなり近いです。
すべての静的メンバ/メソッドを持つクラス シングルトンデザインパターン
クラスのようなもの - ではない模様。クラスについて話すとき、クラスはパターンを実装すると言うことができます。
静的関数 - メンバー関数ではなく、グローバル関数でも同様です。多分あなたはクラスを必要としないでしょうか? wikipediaから
引用:ソフトウェア工学において
、シングルトン パターンは、1つのオブジェクトに クラスのインスタンスを制限するために使用されるデザインパターンです。この定義により
はあなたの実装では、シングルトン実装ではありません - あなたは一般的なアイデアにクラスのつ(または拡張定義では、いくつかの)インスタンスを使用しないでください。
しかし、すべての静的関数とシングルトンパターンを持つクラスの使用は(必ずしもそうではない)意味のある違いはありません。
ロギングクラスのファミリについて考えてみましょう。これらはすべて "LogMessage(message、file、line_number)"を実装しています。あるものはstderrにメッセージを送信し、あるものは開発者のセットにメールを送り、あるメッセージの頻度をメッセージ頻度テーブルに増やしたり、/ dev/null 。実行時に、プログラムは使用するロギング手法の引数ベクトル、レジストリまたは環境変数をチェックし、適切なクラスのオブジェクトを使用してロギングシングルトンをインスタンス化します。エンドユーザが提供するDLLをロードします。その機能は、純粋な静的なシングルトンと重複するのは難しいです。
- 1. 静的クラスとシングルトン
- 2. シングルトンと静的クラスのケーススタディ
- 3. サービスのためのシングルトン/静的クラス
- 4. 静的クラスと静的メソッド
- 5. Javaジェネリック、シングルトン、静的メソッド
- 6. ORMクラスを手渡すハンド - シングルトン、静的親、?
- 7. ConfigurationManagerと静的クラス
- 8. ASP.Netセッションでの静的なシングルトン
- 9. ガベージコレクタと静的クラス、変数
- 10. 静的クラスと継承
- 11. 静的クラス
- 12. ベース静的クラス
- 13. C++でそのクラス内の静的クラス(シングルトン)インスタンスへの参照を返すことはできますか?
- 14. 静的クラスの継承を実装するベストプラクティス? PHPマニュアルから(シングルトン)
- 15. 関数内静的変数と静的クラス変数の比較
- 16. 静的クラスのテンプレートメソッドパターン
- 17. 静的クラスのNullReferenceException
- 18. Spring Wire静的クラス
- 19. Javaアプレット静的クラス
- 20. 静的クラスのオブジェクトインスタンス
- 21. は、静的クラスに
- 22. 静的クラスのメンバ
- 23. 静的クラスはPhpStorm
- 24. 低レベルの違い:静的メソッドを使用した非静的クラスと静的メソッドを使用した静的クラスとの比較
- 25. 抽象クラスと静的メソッドは
- 26. "Do-er"クラスと静的ユーティリティメソッドの比較
- 27. インジェクションとグローバルな静的クラス(Angular 2)
- 28. 静的コンストラクタとクラスの同時使用
- 29. 静的クラスと複数の同時リクエスト
- 30. static&constメンバ、静的クラスとボトルネック
異なるのですが、まったく同じことを達成していませんか? C++では、これが "伝統的な"シングルトンに比べてどのように長所と短所を持っているかはわかりません。 –
シングルトンが使用されない限り、スペースは割り当てられないという違いがありますが、実際に使用されないシングルトンオブジェクトはまれなケースのようです。誰かがこれが重要となる共通のユースケースを持っていますか? –
また、私は、典型的なシングルトンの遅延構築機能は、ほとんどの場合、大域的な変数が必要なものでは役に立たないと考える傾向があります。しかし、ライブラリの場合、エンドユーザーの(開発者の実際の)コードを簡素化するために、オンザフライでの構築が必要な場合があります。 –