依存性注入コンストラクタの狂気を回避するには?質問する

依存性注入コンストラクタの狂気を回避するには?質問する

私のコンストラクターは次のようになっていると思います:

public MyClass(Container con, SomeClass1 obj1, SomeClass2, obj2.... )

パラメータ リストは増え続けています。「Container」は依存性注入コンテナなので、次のようにできないのはなぜでしょうか。

public MyClass(Container con)

すべてのクラスに? 欠点は何ですか? これを行うと、誇張された静的を使用しているように感じます。 IoC と依存性注入の狂気についてあなたの考えを共有してください。

ベストアンサー1

コンテナをサービスロケータとして使用する場合、それは多かれ少なかれ、洗練された静的ファクトリーになります。多くの理由があります。私はこれをアンチパターンだと考えている(こちらも参照)この抜粋私の本から。

コンストラクタインジェクションの素晴らしい利点の一つは、単一責任の原則明らかに明白です。

そうなったら、ファサードサービスへのリファクタリングつまり、現在必要な細かい依存関係の一部または全部の間の相互作用を隠す、より粗い新しいインターフェースを作成します。

おすすめ記事