[解決済み] Dependency Injectionのコンストラクタの狂気を回避する方法とは?
2022-03-17 14:02:55
質問
コンストラクタが以下のようになってきていることに気づきました。
public MyClass(Container con, SomeClass1 obj1, SomeClass2, obj2.... )
のように、パラメータリストがどんどん増えていきます。Container"は私の依存性注入コンテナなので、なぜこれを実行できないのでしょう。
public MyClass(Container con)
をすべてのクラスで使用できますか?デメリットは何ですか?これをやると、見栄っ張りなスタティックを使っているような気がするんです。IoCとDependency Injectionの狂気について、あなたの考えを聞かせてください。
解決方法は?
コンテナをService Locatorとして使用する場合、多かれ少なかれ、見栄えのする静的ファクトリーになるのはその通りです。多くの理由から 私はこれをアンチパターンだと考えています (また この抜粋 拙著より)。
コンストラクタ・インジェクションの素晴らしい利点の1つは、コンストラクタ・インジェクションの違反となる 単一責任の原則 は、まばゆいばかりに明らかです。
そんなときは ファサードサービスにリファクタリングする . 要するに、新しい、より 粗粒度 このインターフェースは、現在必要とする細かい依存関係の一部またはすべての間の相互作用を隠します。
関連
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] enumを列挙するには
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] C#でベースコンストラクタを呼び出す
-
[解決済み] Inversion of ControlとDependency Injectionの比較
-
[解決済み] なぜ依存性注入を使用するのですか?
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
-
[解決済み] 依存性注入は、コンストラクタまたはプロパティ・セッタで行うのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み] DIコンテナを介して作成されたオブジェクトを初期化するパターンはありますか?