DIコンテナとは何か調べてみました。
サンプルはSwiftで書かれています。
DIとは
DIとはDependency injectionの略で、デザインパターンの一種です。
日本語では言うと依存性の注入などと呼ばれる事が多いです。
このデザインパターンは複数の関連するオブジェクトの結合を疎にする為のものです。
例えば以下のようにOwnerはDogクラスに紐付いているとします。
もしこのコードで、OwnerにDogのサブクラスを渡したいと言われたりDogのプロパティーを変更したいと言われると都度Ownerを変更する必要があります。
そうなるとOwnerが多くの場所で使われている場合にテストが大変ですし、柔軟性にも欠けます。
class Owner { func exec() { Dog().howl() } } class Dog { func howl() { print("wan!") } } Owner().exec()
それをDIを使って変更してみます。
DIを使うと以下のようになります。
Dogをコンストラクタで外部から渡す事で柔軟なクラスになりました。
class Owner { let dog: Dog init(dog: Dog) { self.dog = dog } func exec() { dog.howl() } } class Dog { func howl() { print("wan!") } } Owner(dog: Dog()).exec()
DIコンテナとは
DIコンテナとはDIを実現できるフレームワークの事を指します。
JavaのSpring Frameworkなどが有名です。
参考URL
仕事に役立つプログラミング・キーワード - DIコンテナ【Dependency Injection Container】:ITpro
依存性の注入 - Wikipedia