Java-Muster für verschachtelte Rückrufe?

Ich suche nach einem Java-Muster zum Erstellen einer verschachtelten Folge von nicht blockierenden Methodenaufrufen. In meinem Fall muss ein Client-Code einen Dienst asynchron aufrufen, um einen Anwendungsfall auszuführen, und jeder Schritt dieses Anwendungsfalls muss selbst asynchron ausgeführt werden (aus Gründen, die außerhalb des Bereichs dieser Frage liegen). Stellen Sie sich vor, ich habe vorhandene Schnittstellen wie folgt:

public interface Request {} 

public interface Response {} 

public interface Callback<R extends Response> {
    void onSuccess(R response);
    void onError(Exception e);
}

Es gibt verschiedene gepaarte Implementierungen vonRequest undResponse Schnittstellen, nämlichRequestA + ResponseA (vom Kunden gegeben),RequestB + ResponseB (wird intern vom Dienst verwendet) usw.

Der Verarbeitungsablauf sieht folgendermaßen aus:

Zwischen dem Empfang jeder Antwort und dem Senden der nächsten Anforderung muss eine zusätzliche Verarbeitung erfolgen (z. B. basierend auf Werten in einer der vorherigen Anforderungen oder Antworten).

Bisher habe ich zwei Ansätze ausprobiert, um dies in Java zu codieren:

anonyme Klassen: werden aufgrund der erforderlichen Verschachtelung schnell hässlichinnere Klassen: ordentlicher als die oben genannten, aber für einen anderen Entwickler immer noch schwierig, den Ablauf der Ausführung zu verstehen

Gibt es ein Muster, um diesen Code besser lesbar zu machen? Könnte ich die Dienstmethode beispielsweise als eine Liste von in sich geschlossenen Operationen ausdrücken, die nacheinander von einer Framework-Klasse ausgeführt werden, die sich um die Verschachtelung kümmert?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage