Dependency Injection
依存性注入は、依存オブジェクトの生成と結合を外部コンテナへ移し、コンポーネントは依存をコンストラクタ・プロパティ・インターフェース経由で受け取る。呼び出し側が疎結合になる。
目的
モジュールの結合を下げ、テスト容易性と設定可能性を高める。SOLID の DIP の実装である。
メカニズム
コンストラクタ注入はコンストラクタが依存を受け取る。プロパティ注入はセッターで代入する。インターフェース注入は専用インターフェースを実装して受け取る。コンテナ(Spring など DI フレームワーク)が設定に従って注入する。制御の反転(IoC)が中核の考え方である。
ユースケース
- 疎結合なデザイン
- 単体テスト
- フレームワーク設計