いくつかの情報を相互に渡し、その情報を使用して後でコールバックしたいクラスがいくつかあります(コールバックパターン)。
私のアプリケーションでは、このメカニズムは2つの目的を果たします。
- スケジュールされた/遅延した実行
- メッセージングを含む非同期実行
私のオブジェクトは基本的に、「Xの実行が終了したら、電話をかけ直して、ZでYを実行するように指示します(それまでに忘れてしまったため)」とお互いに言います。Xが適切なタイミングを待っているだけでなく、リモートサービスと通信したり、ローカル関数を呼び出したりする場合。
さて、Javaに関数ポインタ(または同等のもの)があれば、1つと必要な引数を含む「Job」クラスを実装します。たとえば、PHPでは、この構造体にクラス名、関数名、および引数の配列を格納する必要があります。Cでは、これは関数へのポインターであり、すべての呼び出しで引数を同じ番号と型にする必要があります。
Javaでは、通常のアプローチは、次のように、コールバックしたいすべてのクラスによって実装されるインターフェースを持つことです。
public interface ICallable {
public void call_me(Object data);
}
今、これは私にはうまくいきません。
- コールバックされるオブジェクトには、呼び出しを受けるための異なるメソッドのセットがある場合があります
- 発信者は、どの通話を行うべきかを決定する人ではありません
おそらく私の問題は、さまざまなコールバックに対して共通のデータ構造と呼び出しプロシージャを使用しようとしていることですが、原則として、それは私には理にかなっているようです。
Javaでこの状況にアプローチするための優れたデザインパターンは何ですか?