首页 > 编程知识 正文

静态流水线和动态流水线,java流式编程原理

时间:2023-05-05 22:34:00 阅读:120177 作者:3283

这是关于管道实现的设计问题。 以下是我天真的实施。 流水线设计模式的实现

界面的每个步骤/阶段:在管线的步骤/阶段

公共接口步骤{

Publicuexecute(tinput;

}

具体实施:

publicclasssteponeimplementsstep {

@Override

publicintegerexecute (集成输入) {

返回输入100;

}

}

publicclasssteptwoimplementsstep {

@Override

publicintegerexecute (集成输入) {

返回输入500;

}

}

publicclassstepthreeimplementsstep {

@Override

公共字符串执行(integer input ) {

返回' the final amount is ' input;

}

}

管道类保留/注册管道中的步骤,然后按顺序执行它们。

公共类pipeline {

privatelistpipelinesteps=new ArrayList (;

privateobjectfirststepinput=100;

publicvoidaddstep (步骤步骤) {

pipelinesteps.add(step;

}

公共语音执行

for(stepstep3360pipelinesteps ) {

objectout=step.execute (firststepinput;

firstStepInput=out;

}

}

}

潜水员程序执行te管道:

公共类主{

publicstaticvoidmain (字符串[ ] args ) {

Pipeline pipeline=new Pipeline (;

pipeline.addstep(newstepone ) );

pipeline.addstep(newsteptwo ) );

pipeline.addstep(newstepthree ) );

pipeline.execute (;

}

}

但是,正如你看到的,天真的实现有很多限制。

主要问题之一是简单的实现不安全,因为要求每个步骤的输出可以是任何类型(如何在Pipeline类中运行)。 如果碰巧未正确连接到管道中的步骤,则APP应用程序将失败。

每个人都会帮助我设计的解决方案。 可以通过添加我编码的东西或指向已经存在的模式来解决这个问题吗?

1

[此问题] 65http://堆栈overflow.com/questions/5686332/pipeline-pattern-implementation-in-Java ]为[该文献] 65333http://PP

0

谢谢@NickBell指向这篇论文。 但是,这篇论文不了解管道的设计方法,所以可以处理不同输出类型的阶段/步骤。

2

考虑“[Java 1.8流”(https://docs.Oracle.com/Java se/8/docs/API/Java/util/stream/package-summary.html ) 它们是[功能] 653359 docs.Oracle.com/Java se/tutorial/collections/streams/)/[ doc ' s ] 653http://www.Oracle.com/查看questions/8680610/Java-generics-chaining-together-generic-function-obj erics ()

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。