僕が考えるDependency Injectionってこんな感じ? 描いてみた
描いた。
※
今回のブログ作成時につかったもの
絵を描くデバイス:iPad Pro 12.9 インチ (9インチでもよい)+Apple Pencil
iOSアプリ:Paper
ブログ作成:Windows10+Chorome
iOSからWin機への共有:GoogleDrive
もう今回描いた絵が僕の考えるすべて。
DIコンテナとかはよくわからんけど
クラスにちゅーにゅーのイメージ(別にクラスだけじゃなくていいけど)
※描きたかっただけ
具象によるDI
まぁよくインターフェイスを利用する方法があるかなーって思うけど
別にそのコンテキストに適切だったらインターフェイスじゃなくて
JavaのStringBuilderやRandomクラスみたいなもので、適切に具象のインスタンスをいれてもいいかなーって思う。
別の処理で同じRandomのインスタンスを流用したいとか?
AndroidだとHandlerの同じインスタンスを複数のクラスで共有しないといけないケースとかある(僕だけ??)
Executorとかも。
この使い方だとSingletonパターンを利用しなくてもいいケースもあるよね。
インターフェイスをつかったDI
インターフェイスを使たときどうなるかって?
これはこれで面白いんよねー
みてみて!(下図)
これはよく言われるポリモーフィズムを利用していくDIの範疇とは違うかもしれんけど
インターフェイス中心の設計していくとこーなる。
DIはそのおでんだてだね!!(あれ変換されない?)
解説すると、外側と内側を明確に分離することで、内側の世界に解決したい問題以外のコードが入らなくなる。
すごくクリーンだよね。
そして内側は外側に左右されない抽象世界のコードなのでテストが簡単になる。
外側と内側でテストを分離できる。
みたいなことがあるんじゃないかなーって思う。
イメージできました?