Шаблон 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
(используется внутри службы) и т. д.
Поток обработки выглядит так:
Между получением каждого ответа и отправкой следующего запроса требуется некоторая дополнительная обработка (например, на основании значений в любом из предыдущих запросов или ответов).
До сих пор я пробовал два подхода к кодированию этого на 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Есть ли какой-то шаблон, чтобы сделать этот код более читабельным? Например, могу ли я выразить метод службы в виде списка автономных операций, которые последовательно выполняются каким-то каркасным классом, который заботится о вложенности?