Шаблон Java для вложенных обратных вызовов?

Я ищу шаблон Java для создания вложенной последовательности неблокирующих вызовов методов. В моем случае некоторый клиентский код должен асинхронно вызывать службу для выполнения некоторого варианта использования, и каждый шаг этого варианта использования должен сам выполняться асинхронно (по причинам, выходящим за рамки этого вопроса). Представьте, что у меня есть следующие интерфейсы:

public interface Request {} 

public interface Response {} 

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

Существуют различные парные реализацииRequest а такжеResponse интерфейсы, а именноRequestA + ResponseA (предоставляется клиентом),RequestB + ResponseB (используется внутри службы) и т. д.

Поток обработки выглядит так:

Sequence diagram showing nested callbacks.

Между получением каждого ответа и отправкой следующего запроса требуется некоторая дополнительная обработка (например, на основании значений в любом из предыдущих запросов или ответов).

До сих пор я пробовал два подхода к кодированию этого на Java:

anonymous classes: gets ugly quickly because of the required nesting inner classes: neater than the above, but still hard for another developer to comprehend the flow of execution

Есть ли какой-то шаблон, чтобы сделать этот код более читабельным? Например, могу ли я выразить метод службы в виде списка автономных операций, которые последовательно выполняются каким-то каркасным классом, который заботится о вложенности?

Ответы на вопрос(4)

Ваш ответ на вопрос