デカップリングは、多くの分野に適用できる非常に一般的な原理です。依存性逆転の原則 は、システムの上位レベルをライブラリに分離し、インターフェイスを使用して下位レベルから分離する特定の形式の分離です。これにより、大幅な手直しなしでシステムの下位レベルの部品を交換できます。
たとえば、システムの上位レベルの部分が下位レベルのクラスの具体的なインスタンスを作成する代わりに、IoCコンテナを使用して、オブジェクトの作成方法を切り離すことができます。
制御の反転は、フレームワークがアプリケーションからある程度の制御を取り戻すことを可能にするフレームワークライブラリによって使用される設計原則です。つまり、ウィンドウフレームワークは、特定のユーザーインターフェイスイベントが発生したときにアプリケーションコードをコールバックする場合があります。マーティン・ファウラーは、「私たちに電話しないでください。私たちはあなたに電話します」のように、ハリウッドの原則という用語を使用しています。デカップリングは、制御の反転の重要な部分です。
しかし、IoCコンテナは制御の反転と何の関係があるのでしょうか。マーティンファウラーを引用するには:
制御の反転はあまりにも一般的な用語であるため、人々はそれを混乱させることに気づきます。さまざまなIoC支持者との多くの議論の結果、依存性注入という名前に決めました。
(Martin Fowlerは、依存性逆転ではなく、依存性注入について話していることに注意してください。)
IoCコンテナは、依存性注入の実装に役立ちます。おそらく、より適切な用語は、依存性注入コンテナです。ただし、IoCコンテナの名前は固定されているようです。依存性注入は依存性逆転の重要な要素ですが、制御の反転はより広く一般的な原則であるため、依存性注入にIoCコンテナーを使用すると混乱する可能性があります。
命名はあまり一貫していないとあなたは指摘しますが、これらの用語は重複していても独立して発明され使用されているので、それは大きな驚きではありません。