一言:いいえ。
より多くの言葉:依存性注入はまさにそれです。これは、別のオブジェクトが依存しているリソースを導入する手段ですが、別のソースからの複雑な詳細を知る必要はありません。DIを使用することは、プログラムでNOTHINGが他のオブジェクトの作成方法を知っている必要があることを意味しません。実際、重要なプログラムでは「新しい」キーワード(またはリフレクションベースの代替)を完全に回避することは非常に実行不可能だと思います。ただし、DIは、このオブジェクトを他のオブジェクトに緊密に結合する多くの依存関係を必要とする複雑なオブジェクトを作成する方法を知ってはならないオブジェクトが、このような密結合の知識をすべて持っているべきではないことを意味します。
O / Oソフトウェア設計の2つの主要な理論、GRASPとSOLIDを勉強します。GRASPは、オブジェクトの目的を研究するように指示し、「このオブジェクトはこの他のタイプの新しいオブジェクトの作成を担当する必要がありますか?そのオブジェクトの「ジョブ記述」の一部ですか?」SOLIDはさらに一歩進んでいます。「S」は「単一責任原則」の略で、オブジェクトには1つのジョブが必要であり、その特定のジョブを実行するプログラム内の唯一のオブジェクトであることを明確に示します。
したがって、GRASPは一般に、これらの新しいオブジェクトを作成する既存のクラスを調べ、目的のレベルの「凝集」を維持しながら、このオブジェクトを作成するタスクがオブジェクトが既に行っていることに適合するクラスを見つけることを推奨します。SOLIDは、凝集が重要であることを示します。これらのオブジェクトを作成するタスクは、クラスに注入する必要のあるファクトリーに与える必要があります。プログラムの複雑さが増すにつれて、これらの方法論のいずれかを順守し、リファクタリングを行うと、非常によく似たアーキテクチャが得られると思います。