メソッド パラメーターで操作のコールバックを定義することは、オブジェクトで定義してセッターを介して設定するよりも悪いのではないかと考えていましたが、設計パターンに関してです。
コールバックの作成に関する設計パターンが存在するかどうかはわかりません。
たとえば、クラス A があり、メソッド M をコールバックで実行したいとします。
public class A {
public interface Callback {
void onEvent();
}
public static methodM(...) {
// ...
}
}
私はこれを行うことができます:
public static void methodM(Callback c) {
c.onEvent();
}
// ...
A.method(this); // The class that calls the method is the callback!
それ以外の:
public static void setCallback(Callback callback) {
this.callback = callback;
}
public static void methodM() {
this.callback.onEvent();
}
// ...
A.setCallback(this); // The class that calls the method is the callback!
A.method();
メソッドが静的であるという事実は、シナリオの理解を容易にするためであることに注意してください。
では、最初のアプローチを有効な設計として使用できますか?
最初のシナリオを使用する理由は、リスト、オブザーバーなどを使用してコールバックのリストを制御する必要があるため、複数回実行するための単純なコールバックを簡単に定義できるようにメモリ リークを回避するためです。