热门标签 | 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 ()


推荐阅读
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本文介绍了如何在多线程环境中实现异步任务的事务控制,确保任务执行的一致性和可靠性。通过使用计数器和异常标记字段,系统能够准确判断所有异步线程的执行结果,并根据结果决定是否回滚或提交事务。 ... [详细]
  • 本文介绍如何在Spring Boot项目中集成Redis,并通过具体案例展示其配置和使用方法。包括添加依赖、配置连接信息、自定义序列化方式以及实现仓储接口。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本文深入探讨了面向切面编程(AOP)的概念及其在Spring框架中的应用。通过详细解释AOP的核心术语和实现机制,帮助读者理解如何利用AOP提高代码的可维护性和开发效率。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • 编写了几个500行左右代码的程序,但基本上解决问题还是面向过程的思维,如何从问题中抽象出类,形成类的划分和设计,从而用面向对象的思维解决问题?有这方面的入门好书吗?最好是结合几个具体的案例分析的 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • 本文详细介绍了在不同操作系统中查找和设置网卡的方法,涵盖了Windows系统的具体步骤,并提供了关于网卡位置、无线网络设置及常见问题的解答。 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
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社区 版权所有