DI
dependency injection
関連用語の整理
Client
利用者側のObject
依存するObjectを外から受け取り、そのObjectを使用する責任を持つ
Dependencyに関しては、それのInterfaceのみを知っている
いくつかの外部のServiceを使いたい!になっている
Service
利用される側のObject
こいつがDependentされる
Dependency
DependentされるObjectのこと
つまりServiceのこと
依存Object
Iinjection
ClientにServiceを渡すこと
インジェクタ
依存オブジェクトを用意する責任を持つ
クライアントが知っているInterfaceを持つクラスを用意する
種類がある
よほどの理由がない限りはこれを使う
何が嬉しいか
ClientはInterfaceのみに依存しているので、Serviceに変更があってもClientに影響しない
テストがしやすくなる
スタブやモックを準備することで、Clientを単体テストすることができる
Serviceの代わりにモックをDependentすればいい
欠点
入力の数が増えすぎて、テストのパターンが増加する
用語も明確でわかりやすい