我已经阅读了chain of the responsibility pattern,这些例子只不过是正常打印。如果我想将更困难的操作链接在一起,例如,在现实生活中有一些用例,该怎么办?
接受请求, 请求 - >处理程序1(请求,整数) - >处理程序2(整数,字符串) - >处理程序3(字符串,长),
其中每个处理程序获取一些参数输入,并以另一个参数类型生成输出。我们可以使用通用创意将这些处理程序链接在一起吗?
public abstract class Handler <Input, Output> {
public void setSuccessor(Handler handler);
public abstract Output handleRequest(Input in);
}
&#13;
我希望我能够清楚地澄清问题。 谢谢!
答案 0 :(得分:0)
在责任链中,链的每个元素都必须使用下一个元素进行设置,因此必须事先知道接口应该是什么。在很多情况下,传递的是上下文。
你确定你手边没有序列,处理程序2依赖于处理程序1的结果来完成它的工作吗?如果是这样的话,责任链就无法解决。
在编译时使用责任链,您不知道哪些步骤是必要的,但是例如当它们来自配置时。