我正在寻找一种 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 编写代码的方法:
- 匿名类:由于需要嵌套而很快变得丑陋
- 内部类:比上面的更整洁,但其他开发人员仍然难以理解执行流程
是否有一些模式可以使这段代码更具可读性?例如,我可以将服务方法表示为一个自包含操作的列表,这些操作由一些负责嵌套的框架类按顺序执行吗?