制御の反転(IoC)を理解する

MartinFowler的には、Dependency Injection(DI)だというツッコミで、IoCからDIになります。DIを理解するには、誰が誰を呼んでいるか考える。例えば、Carクラスの定義で、Engineインタフェースを実装したV6Engineを記述すると、CarクラスはV6Engineクラスに依存する。これを反転させると、CarクラスにはEngineのインタフェースとsetterが用意されていて、外部からV6Engineをセットしてやる。そうすると、Carクラスは他のクラスに依存しない。実際にセットする作業をするのはSpringコンテナがXML設定に基づいて行う。