栄光のグローバル変数 - 栄光のグローバル クラスになります。オブジェクト指向設計を破ると言う人もいます。
古き良きロガー以外で、シングルトンを使用するのが適切なシナリオを教えてください。
ベストアンサー1
真実を探求する中で、シングルトンを使用する「許容できる」理由は実際にはほとんどないことを発見しました。
インターネットで何度も取り上げられる理由の 1 つは、「ロギング」クラス (あなたが言及した) です。この場合、ロギング クラスは通常、プロジェクト内のすべてのクラスでうんざりするほど何度も使用する必要があるため、クラスの単一のインスタンスの代わりにシングルトンを使用できます。すべてのクラスがこのロギング クラスを使用すると、依存性の注入が面倒になります。
ロギングはコードの実行に影響を与えないため、「許容できる」シングルトンの具体例です。ロギングを無効にしても、コードの実行は同じままです。有効にしても、同じです。Miskoは次のように説明しています。シングルトンの根本原因「ここでの情報は、アプリケーションからロガーへの一方向に流れます。ロガーはグローバル状態ですが、ロガーからアプリケーションに情報が流れないため、ロガーは許容されます。」
他にも正当な理由があるはずです。アレックス・ミラーは「嫌いなパターン「サービス ロケータとクライアント側 UI もおそらく「許容できる」選択肢になるだろう」と述べています。