TL;DR

制御の反転(Inversion of Control、IoC)。ハリウッドの原則とも呼ばれる考え方と関係が深い。Wikipedia によると、プロシージャを呼び出す側と呼び出される側を、従来のプログラムとは逆にすることである。

なぜ必要か

Wikipedia によると、フレームワークは個々のアプリケーションの機能を知らないので、再利用できる部分と個別の目的のためのコードを、別々に開発できる。

仕組み

従来のプログラムでは、利用者のコードがライブラリの関数を呼び出し、その戻り値に応じて処理を進める。制御の反転では、ウィンドウシステムのようなフレームワークが入力を監視し、利用者が書いたルーチンを適切なタイミングで呼び出す。利用者が書くコードは、フレームワークの空白を埋めるものになる。

この考え方は、冗談めかして「ハリウッドの原則」とも呼ばれる。「君の方から電話してこないで。君が必要な時はこっちから電話するから」という意味で、英語の call(電話する、呼び出す)を掛けている。

実現する手法には、依存性の注入のほか、ファクトリ、サービスロケータ、テンプレートメソッド、ストラテジーなどのパターンがある。

注意点

個々のタスクは単純になるが、アプリケーション全体の協調動作はより複雑になる。

関連

出典