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