今日,次の文章を偶然目にしました.
制御の逆転の存在が、フレームワークとライブラリを決定的に違うものにしている。 ライブラリとは、基本的に呼び出し可能な関数の集まりである。最近では、通常はクラスの集まりとして構成されている。 関数を呼び出すと、何らかの作業を行い、クライアントに制御を返す。
一方、フレームワークは、抽象的な設計を含んでおり、より多くの振る舞いが組み込まれている。 フレームワークを使うには、作成したクラスを、サブクラス化やプラグインによって、フレームワークに組み込む。フレームワークのコードが、作成したクラスのコードを組み込まれた場所で呼び出す。
これを読んで,
- ライブラリ=『道具』
- フレームワーク=『窓口』
というイメージなのかな,と感じました.
- ライブラリは道具だから,ライブラリが返した値を処理するコードを書かなければいけないし,
- フレームワークは窓口だから,窓口の裏側で使われるコードを書かなければいけない(=制御の逆転),
という感じ.