依存性注入]1に関する具体的な質問、例えばいつ使うのか、どんなフレームワークがあるのか、といった質問はすでにいくつか投稿されている。しかし
**依存性注入とは何なのか、いつ/なぜ使うべきなのか、あるいは使うべきではないのか?
今のところ、私が見つけた最良の定義は、ジェームス・ショアによるものである:
依存性インジェクションは、5ドルの用語に対する25ドルの用語である。 という用語は、5セントの概念に対する25ドルの用語です。[...] 依存性の注入とは、オブジェクトにインスタンス変数を与えることです。 オブジェクトにインスタンス変数を与えることです。[...].
href="http://martinfowler.com/articles/injection.html">マーティン・ファウラーによる記事があります。
依存性の注入とは、基本的に、オブジェクトが必要とするオブジェクト(依存関係)を、オブジェクト自身に構築させる代わりに提供することです。依存関係をモック化したりスタブ化したりできるので、テストにはとても便利なテクニックです。
コンストラクタへの注入やセッタへの注入など、さまざまな方法で依存関係をオブジェクトに注入することができます。Springなどの依存性注入フレームワークを使うこともできますが、必須ではありません。依存性注入を行うために、そのようなフレームワークが必要なわけではありません。明示的にオブジェクト(依存関係)をインスタンス化して渡すことは、フレームワークによるインジェクションと同じくらい良いインジェクションです。