Wzorzec Java dla zagnieżdżonych wywołań zwrotnych?

Szukam wzorca Java do tworzenia zagnieżdżonej sekwencji wywołań metod nieblokujących. W moim przypadku niektóre kody klienta muszą asynchronicznie wywołać usługę, aby wykonać przypadek użycia, a każdy krok tego przypadku musi być wykonywany asynchronicznie (z powodów wykraczających poza zakres tego pytania). Wyobraź sobie, że mam istniejące interfejsy w następujący sposób:

public interface Request {} 

public interface Response {} 

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

Istnieją różne sparowane implementacjeRequest iResponse interfejsy, a mianowicieRequestA + ResponseA (podane przez klienta),RequestB + ResponseB (używane wewnętrznie przez usługę) itp.

Przepływ przetwarzania wygląda tak:

Pomiędzy odebraniem każdej odpowiedzi i wysłaniem następnego żądania musi nastąpić pewne dodatkowe przetwarzanie (np. W oparciu o wartości w dowolnym z poprzednich żądań lub odpowiedzi).

Do tej pory próbowałem dwóch sposobów kodowania tego w Javie:

klasy anonimowe: szybko stają się brzydkie z powodu wymaganego zagnieżdżeniaklasy wewnętrzne: czystsze niż powyższe, ale nadal trudne dla innego dewelopera do zrozumienia przepływu wykonania

Czy jest jakiś wzór, który uczyni ten kod bardziej czytelnym? Na przykład, czy mogę wyrazić metodę usługi jako listę niezależnych operacji wykonywanych po kolei przez jakąś klasę ramową, która zajmuje się zagnieżdżaniem?

questionAnswers(4)

yourAnswerToTheQuestion