LoginSignup
4
1

More than 3 years have passed since last update.

DI(DependencyInjection)の旨味を知る

Last updated at Posted at 2018-03-09

DI... 🤔
この言葉聞いてわかります?

ググっても、依存注入... 🤔
最近のAndroidではDagger2を利用したりしてこの依存注入を行っています。

Android developer公式(https://developer.android.com/training/dependency-injection)

今回はDaggerの説明ではなく、そもそもDIって実際どんなものなの?という人に向けて説明していければと思います。

今回はそんなDI(DependencyInjection)について以前投稿したMVVMの旨味を知るの記事みたいにさらっと書いて行こうと思います。

旨味

  • クラス間を疎結合にできる 🚀
  • テストしやすくなる 🚀

DIは依存注入なのですが少し付け加えると外部から今まで依存して困っていたものを注入できる
なんか言い方が痔の薬見たいですね笑

DI 無

取り外し不可のバッテリーで動くロボット🤖を想像してください。
このロボットはバッテリーに依存しているといえます。
この場合、もっと強力なバッテリーに交換しようにも交換することができません。
全部分解してバッテリーを取り外しすしか🤮

DI 有

取り外し可能のバッテリーで動くロボット🤖を想像してください。
ロボットに違うバッテリーを入れて動くか試したい。
このロボットはバッテリーが取り外し可能なため、違うバッテリーに差し替えてテストが簡単👍

プログラム

ではコードに書く際の考え方を見てみます。
少し説明がごちゃごちゃしてきてしまうので図を作ってみました。

DI.001.png

大体こんな感じで捉えて貰えばいいでしょうか。

今までClassAの中でたてられていたClassBのインスタンスをConstructor or Setter経由でもらう事で外部から注入することができるようになりました。

こうすることで外から自由にインスタンスを渡せるので動的に変更できるという利点があります。
それによって、クラス間が疎結合となりテストなどもしやすくなります。🤩

以上です。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1