掌桥专利:专业的专利平台
掌桥专利
首页

面向java的函数式编程方法、智能终端和存储介质

文献发布时间:2024-01-17 01:13:28


面向java的函数式编程方法、智能终端和存储介质

技术领域

本申请涉及软件编程技术领域,具体涉及一种面向java的函数式编程方法、智能终端和存储介质。

背景技术

随着互联网大数据时代的来临,业务需求的变化越来越快,应用系统的规模及复杂度也在不断地增长,用户对获取便捷、优质、多元化的服务需求日趋上升。相应地,编程人员在工作过程中经常会涉及到各种各样不同的模块化业务。

申请人在构思和实现本申请的过程中,至少发现以下问题:在应对不同业务内容的模块化编程过程中,会重复性地对相同的功能函数在不同的业务模块中进行使用。受制于传统编程技术架构的制约和编程思路的束缚,目前的架构体系中出现任何局部功能的修改或业务变动时,需要对整体模块进行重新编译和部署,严重影响了处理效率。因此,简化模块化编程的灵活实现方式,就成为本领域研究人员亟需解决的问题。

发明内容

为了缓解以上问题,本申请提供一种面向java的函数式编程方法,包括:

解构第一业务或应用模块,获取所述第一业务或应用模块的至少一函数单元;

注解所述至少一函数单元,获取对应的至少一函数组件;

响应于连接第二业务或应用模块,获取所述第二业务或应用模块的需求标注;

根据所述需求标注,检索所述至少一函数组件;

基于所述第二业务或应用模块,建立指向匹配的函数组件的链接向量,以供所述第二业务或应用模块调用。

可选地,所述解构第一业务或应用模块,获取所述第一业务或应用模块的至少一函数单元的步骤包括:

扫描所述第一业务或应用模块,抽取组成每个函数单元的代码块。

可选地,所述注解所述至少一函数单元,获取对应的至少一函数组件的过程中,通过对每个函数单元进行入口协议和出口协议的标注,将所述至少一函数单元中的方法单独封装为函数组件,并归入预设组件池。

可选地,所述预设组件池包括多个功能类;所述归入预设组件池的过程中,根据对每个函数组件标注的标签,将每个函数组件归入对应的功能类。

可选地,所述响应于连接第二业务或应用模块,获取所述第二业务或应用模块的需求标注的过程中,通过读取所述第二业务或应用模块的标注表,获取所述第二业务或应用模块所需的功能类。

可选地,在所述组件池中,每个功能类包括多个函数组件,同一功能类中的每个函数组件具有不同的权重;在所述调用所述组件池,根据每个函数组件的标签,进行功能类的匹配的过程中,调用匹配的功能类中具有最高权重的函数组件。

可选地,所述基于所述第二业务或应用模块,建立指向匹配的函数组件的链接向量,以供所述第二业务或应用模块调用的步骤包括:

基于所述匹配的函数组件,定义一个处理接口,所述处理接口与所述匹配的函数组件的签名一致,所述签名包括接口名称、参数类型和返回类型。

可选地,所述第二业务或应用模块调用的过程中,根据所述函数组件所述的功能类,基于所述处理接口的签名,执行所述匹配的函数组件。

本申请还提供一种智能终端,所述智能终端包括处理器和存储器;

所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现如上述的面向java的函数式编程方法的步骤。

本申请还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的面向java的函数式编程方法的步骤。

如上所述,本申请提供的面向java的函数式编程方法、智能终端和存储介质,通过解耦现有业务或应用模块,组建共享的组件池,以供新的业务或应用模块调用对应的函数组件,使不同的业务或应用模块之间实现重新搭配组合,有效提高了模块化编程的灵活性、便利性和处理效率,提高了用户体验。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请一实施例的面向java的函数式编程方法流程图。

图2为本申请一实施例的函数式编程实现原理结构图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素,此外,本申请不同实施例中具有同样命名的部件、特征、要素可能具有相同含义,也可能具有不同含义,其具体含义需以其在该具体实施例中的解释或者进一步结合该具体实施例中上下文进行确定。

需要说明的是,在本文中,采用了诸如S10、S20等步骤代号,其目的是为了更清楚简要地表述相应内容,不构成顺序上的实质性限制,本领域技术人员在具体实施时,可能会先执行S20后执行S10等,但这些均应在本申请的保护范围之内。

应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

以下结合各个附图对本申请提出的内容进行详细的说明。

Java具有大部分编程语言所共有的一些特征,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的形式和感觉,但它要比C++语言更易于使用,而且在编程时彻底采用了一种以对象为导向的方式。本申请首先提供本申请提供一种面向java的函数式编程方法,图1为本申请一实施例的面向java的函数式编程方法流程图。

请参考图1,一种面向java的函数式编程方法,包括:

S10:解构第一业务或应用模块,获取所述第一业务或应用模块的至少一函数单元。

在一实施例中,面向java的函数式编程方法是一种在java8基础上,配合Spring容器技术,实现的一种程序代码解耦方案。示例性地,在java架构中,函数提供了一个模块的最小单位,模块是针对具体的应用场景对函数进行的不同组合。将各相关模块进行解耦,可以获取多个功能方法对应的函数单元。示例性地,第一业务或应用模块为通信模块,能够解构出多种通信函数单元,例如短信息功能函数单元。

S20:注解所述至少一函数单元,获取对应的至少一函数组件。

图2为本申请一实施例的函数式编程实现原理结构图。

请参考图2,示例性地,扫描各相关模块的代码块,通过注解或标注的方式,将每个功能方法单独封装成函数组件。

S30:响应于连接第二业务或应用模块,获取所述第二业务或应用模块的需求标注。

示例性地,在其他业务或应用模块需要新的功能应用时,可以先进行所需的功能或通信协议的需求标注,以便接口组件了解该业务或应用模块的功能需求。示例性地,第二业务或应用模块为文旅产业应用模块,需要应用到短信息业务功能。

S40:根据所述需求标注,检索所述至少一函数组件。

请继续参考图2,示例性地,组成函数组件的组件池之后,就可以根据其他业务或应用模块的功能需求进行检索匹配。

S50:基于所述第二业务或应用模块,建立指向匹配的函数组件的链接向量,以供所述第二业务或应用模块调用。

请继续参考图2,示例性地,在匹配到合适的函数组件之后,可以对当前需求的业务或应用模块建立调用接口,以便该业务或应用模块在运行过程中调用匹配的函数组件执行。示例性地,文旅产业应用模块在需要时,可以从函数池中直接调用短信息函数组件,从而实现短信息业务功能。

通过解耦现有业务或应用模块,组建共享的组件池,以供新的业务或应用模块调用对应的函数组件,使不同的业务或应用模块之间实现重新搭配组合,有效提高了模块化编程的灵活性、便利性和处理效率,提高了用户体验。

可选地,所述解构第一业务或应用模块,获取所述第一业务或应用模块的至少一函数单元的步骤包括:

扫描所述第一业务或应用模块,抽取组成每个函数单元的代码块。

示例性地,抽取的代码块可以是公共部分代码,其可以是实现某个功能的代码,也可以是某些步骤的代码。目前,每一个自动化测试工程师需开发一个自动化测试工程,每个人的自动化测试工程中,或多或少都会有一部分相同或者类似逻辑的代码块,这些代码块就可以将其抽取出来做成一个服务化接口;如此,所有自动化测试工程师的工程里只需要调用对应的服务化接口,就可以替代重复代码的编写,降低人力成本。

可选地,所述注解所述至少一函数单元,获取对应的至少一函数组件的过程中,通过对每个函数单元进行入口协议和出口协议的标注,将所述至少一函数单元中的方法单独封装为函数组件,并归入预设组件池。

示例性地,抽取组成每个函数单元的代码块,封装为函数组件的过程中,可以首先通过java文件入口获取所述代码块,并接收输入的输入参数以及输出参数;再根据所述输入参数以及输出参数,对所述代码块进行服务化,以生成对应的服务化接口。服务化接口提供了一个java文件入口作为统一入口,当需要抽取代码块作为服务化接口时,就把这块代码块在上述java文件入口处写入,并编辑入参和出参;该框架系统接收到上述代码块以及入参和出参之后,便会自动完成包括服务层设置、建构及自动发布等。

可选地,所述预设组件池包括多个功能类。示例性地,每个短信息功能类下可能包括不同服务商提供的不同函数组件。

可选地,所述归入预设组件池的过程中,根据对每个函数组件标注的标签,将每个函数组件归入对应的功能类。

示例性地,在新解构的一个短信息功能函数时,封装的过程中需要对其标签进行功能标注。在归入预设组件池的过程中,根据短信息功能的标注,可以将新封装的函数组件归类于短信息功能类。

可选地,所述响应于连接第二业务或应用模块,获取所述第二业务或应用模块的需求标注的过程中,通过读取所述第二业务或应用模块的标注表,获取所述第二业务或应用模块所需的功能类。

示例性地,在其他业务或应用模块需要调用特定的功能类函数组件时,可以先进行业务处理标注,声明自己所需的功能或通信协议。

可选地,在所述组件池中,每个功能类包括多个函数组件,同一功能类中的每个函数组件具有不同的权重;在所述调用所述组件池,根据每个函数组件的标签,进行功能类的匹配的过程中,调用匹配的功能类中具有最高权重的函数组件。

示例性地,在预设组件池中的短信息功能类中,每个短信息功能类下可能包括不同服务商提供的不同函数组件。对不同的短信息函数分别给予不同的权重值。在有其他业务或应用需要调用短信息功能类下的短信息功能函数组件时,直接调用权重最高的函数组件即可。在其他实施例中,也可以根据具体的算法,灵活选择其他权重值的函数组件,以适应当前业务或应用模块的实际需求情况,本申请对此不作限定。

可选地,所述基于所述第二业务或应用模块,建立指向匹配的函数组件的链接向量,以供所述第二业务或应用模块调用的步骤包括:

基于所述匹配的函数组件,定义一个处理接口,所述处理接口与所述匹配的函数组件的签名一致,所述签名包括接口名称、参数类型和返回类型。

示例性地,由于每个业务或应用模块对应的数据节点和处理过程往往都具有可类比量化的参数约束条件,因此可以通过定义一个标准化的处理接口的模板,来分别对业务数据集中的数据进行归类。创建的处理接口可以包括了类的名称和属性,能够限定每个处理实现类所需要的实现方法,以及需要确定每个实现方法的方法参数和返回类型。可以分别定义处理接口的各项签名内容,分别对各个节点的实现进行具体的配置,创建实现接口的调用向量。

可选地,所述第二业务或应用模块调用的过程中,根据所述函数组件所述的功能类,基于所述处理接口的签名,执行所述匹配的函数组件。

可选地,根据组件池中的多个函数组件的标签的注册,可以先建立组件池的注册表,以备其他业务或应用模块在需要调用时进行查找。示例性地,在其他业务或应用模块的执行过程中,需要调用对应的函数组件时,读取处理接口的签名内容,根据签名内容中具体的配置,基于组件池的注册表查找对应的函数组件的标签,以确定对应的函数组件进行执行。

本申请还提供一种智能终端,所述智能终端包括处理器和存储器;

所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现如上述的面向java的函数式编程方法的步骤。

在一实施例中,面向java的函数式编程方法是一种在java8基础上,配合Spring容器技术,实现的一种程序代码解耦方案。其主要使用与复杂大型的项目当中,使得用户可以将系统的颗粒度从对象级别降低至函数界别。并且实现了高效安全的方案,使得软件程序代码开发更加有条理性。也优化了软件程序代码开发的可维护性,可拓展性。经过试验证明,智能终端使用该方案后,整体开发维护效率提升30%左右。

本申请还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的面向java的函数式编程方法的步骤。

如上所述,本申请提供的面向java的函数式编程方法、智能终端和存储介质,通过解耦现有java业务或java应用模块,组建共享的组件池,以供新的java业务或java应用模块调用对应的函数组件,使不同的业务或应用模块之间实现重新搭配组合,有效提高了java模块化编程的灵活性、便利性和处理效率,提高了用户体验。

在本申请提供的智能终端和存储介质的实施例中,可以包含任一上述交互方法实施例的全部技术特征,说明书拓展和解释内容与上述方法的各实施例基本相同,在此不再做赘述。

本申请实施例还提供一种计算机程序产品,计算机程序产品包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行如上各种可能的实施方式中的方法。

本申请实施例还提供一种芯片,包括存储器和处理器,存储器用于存储计算机程序,处理器用于从存储器中调用并运行计算机程序,使得安装有芯片的设备执行如上各种可能的实施方式中的方法。

可以理解,上述场景仅是作为示例,并不构成对于本申请实施例提供的技术方案的应用场景的限定,本申请的技术方案还可应用于其他场景。例如,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。

本申请实施例设备中的单元可以根据实际需要进行合并、划分和删减。

在本申请中,对于相同或相似的术语概念、技术方案和/或应用场景描述,一般只在第一次出现时进行详细描述,后面再重复出现时,为了简洁,一般未再重复阐述,在理解本申请技术方案等内容时,对于在后未详细描述的相同或相似的术语概念、技术方案和/或应用场景描述等,可以参考其之前的相关详细描述。

在本申请中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本申请技术方案的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本申请记载的范围。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,被控终端,或者网络设备等)执行本申请每个实施例的方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络,或者其他可编程装置。计算机指令可以存储在存储介质中,或者从一个存储介质向另一个存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、存储盘、磁带)、光介质(例如,DVD),或者半导体介质(例如固态存储盘Solid State Disk (SSD))等。

以上仅为本申请的优选实施例, 并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

相关技术
  • 一种基于智能终端的称重方法、存储介质及智能终端
  • 智能终端的进水检测方法、智能终端及存储介质
  • 一种分布式编程方法、系统及存储介质
  • 音量条的显示方法、智能终端及计算机可读存储介质
  • 语音识别方法、智能终端及计算机可读存储介质
  • 存储器的编程方法、装置、存储设备和存储介质
  • 存储器的编程方法、装置、存储设备和存储介质
技术分类

06120116068420