すでにありましたaskedシングルトンと静的クラスの違いは何ですか?しかし、違いを知って、私はまだ私が選ぶ必要があるときはいつも混乱していると感じます。シングルトンと静的クラスのケーススタディ
私は、このクラスのインスタンスが1つだけ(非常にまれである)、すべてのサービスクラスの静的クラスが必要な場合は、主にPOJOクラス(Javaの場合)にシングルトンを使用していますこれは非常に頻繁に起こる)。
たとえば、私のアプリケーションでは、メッセージを保存する必要があります(シリアライズ可能なクラスのMessageがあります)、ファイルに書き込んだり、ファイルから読み込んだり、ランタイム中にアクセスしたりする必要があります。ここでシングルトンを使用する理由はありません。静的クラスは大丈夫です。静的な唯一のクラスは、read、write、getMessagesの3つの機能を持つMessageStorageと、メッセージの静的なprivate arraylistです。
このアプローチは妥当かどうか、またそうでない場合、その問題は何ですか?
グローバルステート/スタティックステートは一般的に悪いフォームと見なされるため、シングルトンはしばしば[反パターン]とみなされます(http://en.wikipedia.org/wiki/Singleton_pattern#Drawbacks)。 "良い習慣"は、静的なクラスとシングルトンは、状態のないヘルパーメソッド(例えば、 'Math.sqrt(4)')にしか使われないということです。 – Bringer128
この場合、あなたは何をしますか? – Sergey
ステートが保存されている必要がある場合は、オブジェクトへの参照を1つだけ持つことになります。それはシングルトンパターンでは保証されませんが、情報を必要とするものによってグローバルに到達可能な場所に存在します。それは同じ効果を達成するだろうが、私のポストで述べたように、違いはスケーラビリティであり、変更可能性は要求の変化に対応して改善される。クラスを作成するとシングルトンのゴールが達成されます。あなたがする必要があるのは、世界的に見つかる場所での参照です。 – Dessus