[解決済み] StrategyパターンとDependency Injectionの違いは何ですか?
2022-11-14 03:50:29
質問
StrategyパターンとDependency Injectionは、どちらも実行時にオブジェクトをセット/インジェクトすることができます。StrategyパターンとDependency Injectionの違いは何ですか?
どのように解決するのか?
DIとStrategyは同じように動作しますが、Strategyはより細かい依存関係や短命な依存関係に使用されます。
オブジェクトが固定された戦略で構成される場合、たとえばオブジェクトが構築されるとき、戦略とDIの区別は曖昧になります。しかし、DI シナリオでは、オブジェクトの依存関係がその寿命の間に変更されることは珍しいことですが、ストラテジーではこれは珍しいことではありません。
また、ストラテジーをメソッドの引数として渡すことができます。一方、メソッドの引数注入という関連概念は普及しておらず、ほとんどが自動テストのコンテキストでのみ使用されています。
ストラテジーは意図に焦点を当て、同じ動作契約に従った異なる実装を持つインタフェースを作成することを推奨しています。DIは、ある動作の実装を持ち、それを提供することだけに重点を置いています。
DIでは、実装の一部を入れ替えるだけでなく、他の理由でプログラムを分解することができます。
DIで使われるインターフェースで、実装が1つしかないものは非常によくあります。具体的な実装が1つしかない(ever)"Strategy"は、実際の問題ではありませんが、おそらくDIに近いと思われます。
関連
最新
-
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 "と呼ぶのを避けるには?[クローズド]
-
[解決済み】インターフェイスを作成するタイミングはどのように判断するのでしょうか?
-
[解決済み】MVCにおけるビジネスロジック【終了しました
-
[解決済み] [Builder Design パターンと Factory Design パターンの違いは何ですか?[クローズド]。
-
[解決済み] テンプレート方式とストラテジーパターンの違いは何ですか?
-
[解決済み] コード内のスイッチをなくす方法【非公開
-
[解決済み] ブリッジパターンはどのようなときに使うのですか?Adapterパターンとどう違う?
-
[解決済み] Observerデザインパターンと "Listeners "の比較
-
[解決済み] FacadeパターンとAdapterパターンの違いは何ですか?
-
[解決済み] PHPプロジェクトにおいて、ヘルパーオブジェクトを保存し、アクセスし、整理するためにどのようなパターンが存在するのでしょうか?[クローズド]