1. ホーム
  2. design-patterns

[解決済み] シングルトン・パターンの欠点やデメリットは何ですか?[クローズド]

2022-03-16 20:28:46

質問

シングルトンパターン は、完全な GoF 's パターン集 しかし、最近、開発者の世界では、どちらかというと孤立しているようです。私は今でも多くのシングルトンを使っていて、特に ファクトリークラス そして、マルチスレッドの問題には少し注意しなければなりませんが(実際には他のクラスと同様)、なぜそれがそんなにひどいのか分かりません。

スタックオーバーフローは特に、シングルトンが悪であることに誰もが同意していると思い込んでいるようです。なぜでしょうか?

回答の裏付けは"でお願いします。 事実、参考資料、または特定の専門知識 となります。

解決方法

ブライアン・バトンの言い換え。

  1. 一般的にグローバルインスタンスとして使用されますが、なぜそれが悪いのでしょうか?なぜなら、アプリケーションの依存関係を、インターフェースを通して公開するのではなく、コードの中に隠してしまうからです。何かを渡すのを避けるためにグローバルにするのは コード臭 .

  2. に違反している。 単一責任原則 : 自らの創造とライフサイクルをコントロールするという事実によって。

  3. これらは本質的に、コードがタイトになる原因となる カップリング . このため、多くの場合、テスト時のフェイクアウトはかなり困難です。

  4. アプリケーションのライフタイムに渡って状態を持ち運ぶことになる。また、テストを順番に行う必要があるため、テストに支障をきたします。これはユニットテストの大きな欠点です。なぜでしょうか?なぜなら、それぞれのユニットテストは他のユニットテストから独立していなければならないからです。