1. ホーム
  2. c#

[解決済み] 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つは、コンストラクタ・インジェクションの違反となる 単一責任の原則 は、まばゆいばかりに明らかです。

そんなときは ファサードサービスにリファクタリングする . 要するに、新しい、より 粗粒度 このインターフェースは、現在必要とする細かい依存関係の一部またはすべての間の相互作用を隠します。