図1●コンポーネント間の依存性 オブジェクトが他のオブジェクトを利用する場合,最も単純な方法がオブジェクトを生成したり,呼び出したりするコードを直接記述するやり方だ。これは,両者を結ぶ釘の頭が呼び出す側のオブジェクトに入り込んでいる状態と言える。利用される側のオブジェクトは釘から容易に抜けるが,頭が入っているオブジェクトの再利用は難しい。両方の釘を抜けるようにするには,何らかの媒介する仕組みが必要である。 図2●Dependency Injection(DI) JavaやC#には,クラスの階層構造と関係なく,共通のメソッドを定義するための「interface(インタフェース)」という仕組みがある。通常,あるインタフェース(interfaceX)を実装したオブジェクトを利用したいクラス(classA)は,そのインタフェースを実装したクラス(classB)を指定し,生成する必要がある(a)。こ