callback
プログラムは、メインの流れの中で順番にstatementを実行するけど、
ある処理をメインの流れに書きつつ、その処理はsub routineの中で実行してほしい。
それには、sub routine(関数)の引数にメインの流れで書いた処理を渡しておいて(関数を渡す)、
その関数の中でその処理を呼んでもらう。 callbackしてもらう。
また、以下のような利点もある。
sub routineがいつ終わるか分からない状態のときもある。
その場合、sub routine とメインの処理のスレッドを分けておけば、
メインの流れとsub routineで別々に実行できる。
そして、メインの流れに記述した処理を、ad hockにsub routineの引数に渡して、
sub routine内の(プログラマーによる)任意の場所で実行(callback)できるようにする。
イベントベースのプログラムには便利。
ただ、問題点として、
callbackがたくさんあると、プログラムの可読性が下がる(順番に読めない)
実装をしたオブジェクトでcallbackを実行する形(これでcallbackを渡したことになる)もよくある?(kotlinを書き始めたせいかな)