pipeline设计模式
时间: 2023-10-28 22:05:38 浏览: 53
Pipeline 设计模式是一种将一个大型任务分解成多个小任务并将它们串联起来的设计模式。每个小任务都会处理一部分数据并将其传递给下一个任务,直到最终结果被生成。这种模式可以提高代码的可读性和可维护性,同时也可以提高代码的性能。
下面是一个简单的 Pipeline 设计模式的示例:
```java
import java.util.ArrayList;
import java.util.List;
public class PipelineDemo {
public static void main(String[] args) {
List<String> input = new ArrayList<>();
input.add("apple");
input.add("banana");
input.add("cherry");
Pipeline<String, Integer> pipeline = new Pipeline<>();
pipeline.add(new StringLengthTask())
.add(new SquareTask());
List<Integer> output = pipeline.execute(input);
System.out.println(output);
}
}
interface Task<I, O> {
O execute(I input);
}
class Pipeline<I, O> {
private List<Task<?, ?>> tasks = new ArrayList<>();
public <T> Pipeline<I, T> add(Task<O, T> task) {
tasks.add(task);
return (Pipeline<I, T>) this;
}
public List<O> execute(List<I> input) {
List<O> output = new ArrayList<>();
for (I i : input) {
Object result = i;
for (Task<?, ?> task : tasks) {
result = task.execute(result);
}
output.add((O) result);
}
return output;
}
}
class StringLengthTask implements Task<String, Integer> {
@Override
public Integer execute(String input) {
return input.length();
}
}
class SquareTask implements Task<Integer, Integer> {
@Override
public Integer execute(Integer input) {
return input * input;
}
}
```
在这个示例中,我们定义了一个 Pipeline 类,它包含了一个任务列表。我们可以通过调用 add 方法来添加任务。execute 方法接受一个输入列表,并依次将每个输入传递给任务列表中的每个任务。最终结果被收集到一个输出列表中并返回。
在这个示例中,我们定义了两个任务:StringLengthTask 和 SquareTask。StringLengthTask 接受一个字符串并返回其长度,SquareTask 接受一个整数并返回其平方。我们将这两个任务添加到 Pipeline 中,并将一个字符串列表传递给 execute 方法。最终,我们得到了一个整数列表,其中包含了每个字符串的长度的平方。