热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

这是关于管道实现的设计问题。其中一个主要的问题是,由于要求每个步骤的输出可以是任何类型,所以朴素的实现不是类型安全的。如果我碰巧不正确地连线管道中的步骤,该应用程序将失败。任何人都


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


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


公共接口步骤{


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 ()


推荐阅读
author-avatar
技术潜行者
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有