我有一个流程,开始读取原始文档,然后删除其不可用的部分,然后提取其章节,进行一些检测,提取特定内容等。
在我看来,实现此类管道的基本方法是使用streams:
从
A
到 D
对象的专用函数,代表实现的细化步骤:Stream<A>
→Stream<B>
→Stream<C>
→Stream<D>
,最后返回D
。
对我来说看起来更干净的一种方法是使用functions:
Supplier<A>
或 A
→ Function<A,B>
→ Function<B,C>
→ Function<C,D>
,然后返回 D
。
但是 Java 的最新版本是否提供了更方便的结构性通用类来帮助创建管道?
例如,将它们视为线程,允许在失败的步骤之一中取消一个管道......或者它提供的任何有用的帮助。
通过互联网和S.O.阅读,我发现有一次,在2010年左右,出现了一种管道模式,但我看到它是用文本而不是代码描述的。
您可以从
java.util.funtion.Function
创建流并使用 andThen
方法链接它们
// declaring all pipelines
UnaryOperator<String> pipeline0 = s -> s+= "-0";
UnaryOperator<String> pipeline1 = s -> s+= "-1";
UnaryOperator<String> pipeline2 = s -> s+= "-2";
UnaryOperator<String> pipeline3 = s -> s+= "-3";
UnaryOperator<String> pipeline4 = s -> s+= "-4";
// chain pipelines
String outputPipeline = pipeline0
.andThen(pipeline1)
.andThen(pipeline2)
.andThen(pipeline3)
.andThen(pipeline4)
.apply("string-input"); // call then with inital value
// print result
System.out.println(outputPipeline); // it will print string-input-0-1-2-3-4
与java.util.funtion.UnaryOperator<String>
相同java.util.funtion.Function<String,String>