[解決済み] 依存性注入とシングルトンデザインパターン
2023-02-24 08:42:43
質問
依存性注入とシングルトン パターンのどちらを使うべきかは、どのように判断すればよいのでしょうか。 私は、彼らが言う多くのウェブサイトを読んできました "シングルトンパターンよりも依存性注入を使用する"。しかし、私は彼らに完全に同意するかどうかわからない。私の小規模または中規模のプロジェクトでは、私は間違いなくシングルトンパターンの使用は簡単だと思います。
例えばLogger。私は
Logger.GetInstance().Log(...)
しかし、この代わりに、なぜ私はロガーのインスタンスで、私が作成するすべてのクラスを注入する必要があるのでしょうか?
どのように解決するのですか?
テストで何がログに記録されるかを検証したい場合、依存性注入が必要です。さらに、ロガーがシングルトンであることは稀です - 一般的に、あなたのクラスの各々にロガーがあります。
このプレゼンテーションを見る を見れば、なぜシングルトンがダメなのかがわかるでしょう。
シングルトンの問題は、特にテストにおいて予測するのが難しいグローバルな状態を表していることです。
オブジェクトは事実上のシングルトンであっても、依存性注入によって取得することができることを念頭に置いています。
Singleton.getInstance()
.
Misko Heveryがプレゼンテーションの中で述べた重要なポイントを列挙してみました。このプレゼンテーションを見た後は、なぜオブジェクトに 何を を定義させるのが良いが、その依存関係を定義させないのが良い理由です。 を作成する方法 を定義していません。
関連
-
[解決済み] 静的クラスとシングルトンパターンの違い?
-
[解決済み] Inversion of ControlとDependency Injectionの比較
-
[解決済み] なぜ依存性注入を使用するのですか?
-
[解決済み】関数型プログラミングはGoFデザインパターンに取って代わるか?
-
[解決済み】C++ シングルトンデザインパターン
-
[解決済み】Proxy、Decorator、Adapter、Bridgeの各パターンの違いとは?
-
[解決済み] ブリッジパターンはどのようなときに使うのですか?Adapterパターンとどう違う?
-
[解決済み] Observerデザインパターンと "Listeners "の比較
-
[解決済み] ユーティリティクラスは悪なのか?[クローズド]
-
[解決済み] Visitorパターンのaccept()メソッドのポイントは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] シングルトン・パターンの欠点やデメリットは何ですか?[クローズド]
-
[解決済み] デザインパターンについて。シングルトンはいつ使うべきですか?
-
[解決済み】クラスの命名 - すべてを"<WhatEver>Manager "と呼ぶのを避けるには?[クローズド]
-
[解決済み】Proxy、Decorator、Adapter、Bridgeの各パターンの違いとは?
-
[解決済み] [Builder Design パターンと Factory Design パターンの違いは何ですか?[クローズド]。
-
[解決済み] ブリッジパターンはどのようなときに使うのですか?Adapterパターンとどう違う?
-
[解決済み] ブリッジパターンとストラテジーパターンの違いは何ですか?
-
[解決済み] Hystrixが採用しているBulkhead Patternとは何ですか?
-
[解決済み] PHPプロジェクトにおいて、ヘルパーオブジェクトを保存し、アクセスし、整理するためにどのようなパターンが存在するのでしょうか?[クローズド]
-
[解決済み] StrategyパターンとDependency Injectionの違いは何ですか?