オブジェクト指向でソフトウェアを実装していると、オブジェクトの生成に一連の手続きが必要なものがでてきます。このような生成に関する手続きがあちこちのソースコードへ散在すると、望ましくない状況になることは想像に難くないでしょう。この問題に対処するために、Simple FactoryやFactory Methodといったデザインパターンがあり、オブジェクトの生成に関する手続きや関連オブジェクトも含めたオブジェクトの構成(オブジェクトコンストラクション)に関する知識は1箇所にまとめるということが定石となっています。 しかし、単にファクトリーを導入するだけだと、オブジェクトの構成処理は分離・隠蔽できても、利用オブジェクトがファクトリー自体に依存してしまうことになります。このような試行錯誤の歴史から登場したのがDependency Injection(依存性の注入)パターンです。Dependency
![Pimpleでシンプルに正しくDIを理解する](https://cdn-ak-scissors.b.st-hatena.com/image/square/35d36425699407bb30504b77aa72c8900d461585/height=288;version=1;width=512/https%3A%2F%2F64.media.tumblr.com%2Fa8411ce1c15442b0922082da474b734c%2F9c152582177f9402-07%2Fs400x600%2F4e91c44659ea133f83625e2ec8851ea2ce161088.png)