DI
DI・・・Dependency Injection
依存性の注入と呼ばれてるけど、依存オブジェクトの注入と考えた方がわかりやすい
あるクラスやオブジェクトが依存しているオブジェクトを、外部から与えるようにすること
今までクラスの中で別のクラスを呼び出していたところを、そのクラスの中で呼び出すのではなく、引数としてオブジェクトを与えるようにするイメージ
code: Ruby
# not use DI
class X
def hoge
puts "hoge"
end
end
class Y
def hogehoge
x = X.new
x.hoge
end
end
# use DI
class X
def hoge
puts "hoge"
end
end
class Y
def hogehoge(x)
# このメソッドを使用する際に引数として別のオブジェクトを与えることにより、
# hogeメソッドを持つオブジェクトであればクラスXだけでなく、どんなクラスのものでも受け入れられるようになった
x.hoge
end
end
DIを使っても、結局具体的なクラス(具象クラス)に依存していることになるので、これだけだとあんまり嬉しさがない
→インターフェースも合わせて使うことでより効果的になる