個人事業主になったので真面目にアウトプットしてみるブログ

フリーで顧客の会社に潜り込んでAndroidアプリつくって、とりあえず食っていけるようにアウトプットを増やしていくブログです。

僕が考えるDependency Injectionってこんな感じ? 描いてみた

描いた。


今回のブログ作成時につかったもの
絵を描くデバイスiPad Pro 12.9 インチ (9インチでもよい)+Apple Pencil
iOSアプリ:Paper
ブログ作成:Windows10+Chorome
iOSからWin機への共有:GoogleDrive

f:id:pooh3-mobi:20180527165213p:plain


もう今回描いた絵が僕の考えるすべて。
DIコンテナとかはよくわからんけど



f:id:pooh3-mobi:20180527165222p:plain

クラスにちゅーにゅーのイメージ(別にクラスだけじゃなくていいけど)
※描きたかっただけ

具象によるDI

f:id:pooh3-mobi:20180527165226p:plain

まぁよくインターフェイスを利用する方法があるかなーって思うけど
別にそのコンテキストに適切だったらインターフェイスじゃなくて
JavaのStringBuilderやRandomクラスみたいなもので、適切に具象のインスタンスをいれてもいいかなーって思う。
別の処理で同じRandomのインスタンスを流用したいとか?
AndroidだとHandlerの同じインスタンスを複数のクラスで共有しないといけないケースとかある(僕だけ??)
Executorとかも。
この使い方だとSingletonパターンを利用しなくてもいいケースもあるよね。


インターフェイスをつかったDI

f:id:pooh3-mobi:20180527165231p:plain

インターフェイスを使たときどうなるかって?
これはこれで面白いんよねー

みてみて!(下図)

f:id:pooh3-mobi:20180527165236p:plain

これはよく言われるポリモーフィズムを利用していくDIの範疇とは違うかもしれんけど
インターフェイス中心の設計していくとこーなる。
DIはそのおでんだてだね!!(あれ変換されない?)

解説すると、外側と内側を明確に分離することで、内側の世界に解決したい問題以外のコードが入らなくなる。
すごくクリーンだよね。

そして内側は外側に左右されない抽象世界のコードなのでテストが簡単になる。
外側と内側でテストを分離できる。

みたいなことがあるんじゃないかなーって思う。



イメージできました?