渡辺 博之


Dispatcherクラスを使わずに、呼び出されるクラス(Acceptor)自身に静的なコールバックメソッドを持たせることも考えられるが、コールバックメソッドは戻り値や引数などのシグニチャが呼び出し先である非オブジェクト指向モジュールに大きく左右されるため、Acceptorのクラス定義が不安定になる。コールバック関数をDispatcherクラスに持たせることでAcceptorはコールバックのシグニチャから切り離すことができる。
Dispatcherクラスが呼び出すオブジェクトとメソッドは固定されているため、非オブジェクト環境から呼び出されるオブジェクトはクラス毎にそれに対応するDispatcherクラスを作る必要がある。但し、クラス間に汎化関係があり、コールバック関数から呼び出されるメソッドが仮想関数の場合には、ポリモフィックな動作が可能になるためDispatcherは1つで良い。