我会专注于
如果我碰巧错误地连接了管道中的步骤,则该应用程序将失败。
是的,这是一个问题。
StepThree是这里的陌生人。我认为没有一种简单的模式可能会有所帮助,但我确实认为它必须是策略和构建器模式的组合。例如:
Pipeline<Integer,Integer> intPipe = new Pipeline<>();intPipe = intPipe.add(new StepOne()); // increment 100intPipe = intPipe.add(new StepTwo()); // increment 500Pipeline<String, Integer> strPipe = intPipe.add(new StepThree()); // convert
管道是这样的:
public static class Pipeline<IN, OUT> { //... public<A> Pipeline<OUT,A> add(Step<IN,A> step) { pipelineSteps.add(step); return (Pipeline<OUT,A>)this; }}使用快速生成器语法可以正常工作:
Pipeline<String, Integer> pipe = new Pipeline<Integer, Integer>() .add(new StepOne()).add(new StepTwo()).add(new StepThree());
这应该起作用,因为泛型不是字节码的一部分。



