责任模式的链接采用不同的参数类型?

时间:2016-04-08 04:12:20

标签: java design-patterns chaining

我已经阅读了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;
&#13;
&#13;

我希望我能够清楚地澄清问题。 谢谢!

1 个答案:

答案 0 :(得分:0)

在责任链中,链的每个元素都必须使用下一个元素进行设置,因此必须事先知道接口应该是什么。在很多情况下,传递的是上下文。

你确定你手边没有序列,处理程序2依赖于处理程序1的结果来完成它的工作吗?如果是这样的话,责任链就无法解决。

在编译时使用责任链,您不知道哪些步骤是必要的,但是例如当它们来自配置时。