のシングルトンパターン全額支払い済みの会員ですゴーフのパターンブックですが、最近は開発者の世界では孤立しているようです。私は今でもシングルトンをかなり多く使用しています。特にファクトリークラス、そして、マルチスレッドの問題については(実際にはどのクラスでもそうですが)少し注意する必要がありますが、なぜそれがそれほどひどいのか私にはわかりません。
Stack Overflow は特に、シングルトンは悪であるという点に誰もが同意していると想定しているようです。なぜでしょうか?
回答には「事実、参考文献、または特定の専門知識」を添えてください。
ベストアンサー1
ブライアン・バトン氏の言葉を引用すると:
これらは通常グローバルインスタンスとして使用されますが、なぜそれが悪いのでしょうか? アプリケーションの依存関係をインターフェースを通じて公開するのではなく、コード内に隠すためです。何かをグローバルにして、それを渡さないようにすることは、コードの臭い。
彼らは単一責任原則: 自身の創造とライフサイクルを制御できるという事実によります。
本質的にコードを厳密にする結合したこれにより、多くの場合、テスト中に偽造することがかなり困難になります。
これらは、アプリケーションの存続期間中、状態を保持します。テストを順序付けする必要がある状況に陥る可能性があるため、テストにさらなる打撃を与えます。これは、ユニット テストでは絶対に避けるべきことです。なぜでしょうか。各ユニット テストは互いに独立している必要があるためです。