0

次のようなコールバックを登録するだけではなく、Observer を使用することの長所と短所は何ですか。

worker.setOnJobIsDone(func);
4

1 に答える 1

1

関数ポインタを使用する場合、オブジェクトはそのユーザーを完全に認識しません。柔軟性を高める関数を呼び出すだけです(ユーザーは何も継承する必要はありません。このオブジェクトのユーザーを好きなように配線できます)。

オブザーバーパターンでは、インターフェースを定義する必要があります。これは柔軟性が低くなりますが、より明確になります。

読みやすさのために、オブザーバーパターンを強く好みます。これまでコードを見たことがない場合は、ワークフローを追跡する方がはるかに簡単です。また、メンバー関数を渡すためのC ++構文は、目にはちょっと難しいです。

于 2012-05-31T16:33:15.383 に答える