Padrão Java para retornos de chamada aninhados?

Eu estou procurando um padrão de Java para fazer uma seqüência aninhada de chamadas de método não-bloqueio. No meu caso, algum código do cliente precisa chamar um serviço de forma assíncrona para executar algum caso de uso, e cada etapa desse caso de uso deve ser executada de forma assíncrona (por razões fora do escopo desta questão). Imagine que eu tenha interfaces existentes da seguinte maneira:

public interface Request {} 

public interface Response {} 

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

Existem várias implementações pareadas doRequest eResponse interfaces, nomeadamenteRequestA + ResponseA (dado pelo cliente),RequestB + ResponseB (usado internamente pelo serviço), etc.

O fluxo de processamento é assim:

Entre o recebimento de cada resposta e o envio da próxima solicitação, é necessário algum processamento adicional (por exemplo, com base nos valores de qualquer uma das solicitações ou respostas anteriores).

Até agora eu tentei duas abordagens para codificar isso em Java:

classes anônimas: fica feio rapidamente devido ao aninhamento necessárioclasses internas: mais puro do que o acima, mas ainda difícil para outro desenvolvedor compreender o fluxo de execução

Existe algum padrão para tornar esse código mais legível? Por exemplo, eu poderia expressar o método de serviço como uma lista de operações independentes que são executadas em seqüência por alguma classe de estrutura que cuida do aninhamento?

questionAnswers(4)

yourAnswerToTheQuestion