CN113326034A - 策略实现的调用方法及装置、电子设备、存储介质 - Google Patents
策略实现的调用方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN113326034A CN113326034A CN202010131597.9A CN202010131597A CN113326034A CN 113326034 A CN113326034 A CN 113326034A CN 202010131597 A CN202010131597 A CN 202010131597A CN 113326034 A CN113326034 A CN 113326034A
- Authority
- CN
- China
- Prior art keywords
- policy
- strategy
- implementation
- container
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种策略实现的调用方法及装置、电子设备、存储介质;该方法应用于编程设备,该编程设备预先创建有与策略接口对应的策略容器,各个策略容器内承载有属于该策略接口的策略实现以及与策略实现对应的策略实现标识;该方法可以包括:当检测到调用指令时,读取其中包含的目标策略实现标识和目标策略接口;根据目标策略接口确定目标策略容器;根据目标策略实现标识在目标策略容器中查找目标策略实现;将查找到的目标策略实现承载于目标策略容器以实现调用。本申请通过预先创建策略容器对策略实现按照所属策略接口的不同进行了划分,一方面使得调用时无需重复编写用于承载策略实现的代码;另一方面减少了调用时所需查找的策略实现的数量。
Description
技术领域
本申请涉及软件开发领域,特别涉及一种策略实现的调用方法及装置、电子设备、存储介质。
背景技术
随着用户对应用软件的需求越来越广泛,开发人员对如何降低软件开发难度的问题日益重视。
Java语言是一门面向对象的编程语言,凭借其功能强大和简单易用的特征备受开发人员的青睐。为了进一步提高通过Java语言开发软件的效率,基于Java语言的Spring框架应运而生。Spring框架使得开发人员在软件开发的过程中无需关注编程中的通用代码,只需关注与业务相关的代码即可,降低了软件开发的难度,提高了效率。
发明内容
有鉴于此,本申请提供一种策略实现的调用方法及装置、电子设备、存储介质,能够使得开发人员在调用策略实现时,无需特地编写用于承载该策略实现的代码,只需查找相应的策略容器用于承载策略实现即可实现调用。
为实现上述目的,本申请提供技术方案如下:
根据本申请的第一方面,提出了一种策略实现的调用方法,应用于编程设备,所述编程设备预先创建有与策略接口对应的策略容器,针对各个策略容器内承载的策略实现建立有策略实现和策略实现标识的映射关系;所述方法包括:
当检测到针对目标策略实现的调用指令时,读取所述调用指令中包含的策略实现标识和与所述目标策略实现对应的目标策略接口;
根据所述目标策略接口确定对应的目标策略容器;
根据所述映射关系在所述目标策略容器中查找与所述策略实现标识对应的策略实现,并将查找到的策略实现作为所述目标策略实现;
基于所述目标策略容器承载所述目标策略实现,以用于对所述目标策略实现进行调用。
可选的,所述编程设备的策略接口与业务类型一一对应,任一策略容器内承载的至少一个策略实现属于同一业务类型,所述调用指令中包含的目标策略接口为与所述目标策略实现所属业务类型对应的策略接口。
可选的,各个策略容器由调用Spring框架中的容器生成工具生成,所述容器生成工具基于Spring框架的FactoryBean特性定义得到。
可选的,任一策略容器内承载的策略实现通过以下方式获取:
确定与所述任一策略容器对应的特定策略接口;
读取Spring容器中保存的与所述特定策略接口对应的至少一个策略实现;将读取到的策略实现加入所述任一策略容器。
可选的,所述映射关系通过以下方式得到:
从Spring容器中读取与读取到的策略实现对应的注解;
获取与所述特定策略接口对应的自定义注解标识逻辑;所述自定义注解标识逻辑基于各策略接口对应的业务类型自定义得到;
根据获取到的自定义注解标识逻辑以及读取的注解给读取到的策略实现配置相应的策略实现标识。
根据本申请的第二方面,提出了一种策略实现的调用装置,应用于编程设备,所述编程设备预先创建有与策略接口对应的策略容器,针对各个策略容器内承载的策略实现建立有策略实现和策略实现标识的映射关系;所述方法包括:
读取单元,当检测到针对目标策略实现的调用指令时,读取所述调用指令中包含的策略实现标识和与所述目标策略实现对应的目标策略接口;
确定单元,根据所述目标策略接口确定对应的目标策略容器;
查找单元,根据所述映射关系在所述目标策略容器中查找与所述策略实现标识对应的策略实现,并将查找到的策略实现作为所述目标策略实现;
调用单元,基于所述目标策略容器承载所述目标策略实现,以用于对所述目标策略实现进行调用。
可选的,所述编程设备的策略接口与业务类型一一对应,任一策略容器内承载的至少一个策略实现属于同一业务类型,所述调用指令中包含的目标策略接口为与所述目标策略实现所属业务类型对应的策略接口。
可选的,各个策略容器由调用Spring框架中的容器生成工具生成,所述容器生成工具基于Spring框架的FactoryBean特性定义得到。
可选的,任一策略容器内承载的策略实现通过以下方式获取:
所述确定单元,进一步用于确定与所述任一策略容器对应的特定策略接口;
所述读取单元,进一步用于读取Spring容器中保存的与所述特定策略接口对应的至少一个策略实现;将读取到的策略实现加入所述任一策略容器。
可选的,所述映射关系通过以下方式得到:
所述读取单元,进一步用于从Spring容器中读取与读取到的策略实现对应的注解;
获取单元,获取与所述特定策略接口对应的自定义注解标识逻辑;所述自定义注解标识逻辑基于各策略接口对应的业务类型自定义得到;
配置单元,根据获取到的自定义注解标识逻辑以及读取的注解给读取到的策略实现配置相应的策略实现标识。
根据本申请的第三方面,提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如上述实施例中任一所述的方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述实施例中任一所述方法的步骤。
由以上技术方案可见,本申请在调用策略实现之前,预先创建对应于各个策略接口的策略容器,使得开发人员在调用策略实现时,无需特定编写用于承载该策略实现的代码,只需基于待调用策略实现的策略接口查找相应的策略容器,用于承载策略实现即可实现调用。
进一步的,各个策略接口分别用于表示不同的业务类型,本申请在创建策略容器之后,基于各个策略实现所属策略接口将策略实现加入相应的策略容器中,即借助策略容器完成了基于策略接口的不同类型对策略实现的划分。将策略实现按照策略容器分别存储的方式,使得在调用时无需匹配所有策略实现,只需找到相应的策略容器,匹配该容器中相对更少量的策略实现即可找到待调用的策略实现。
附图说明
图1是本申请一示例性实施例示出的一种策略实现的调用方法的流程图。
图2是本申请一示例性实施例示出的一种策略容器的生成方法的流程图。
图3是本申请一示例性实施例示出的另一种策略实现的调用方法的流程图。
图4是本申请一示例性实施例示出的一种电子设备的结构示意图。
图5是本申请一示例性实施例示出的一种策略实现的调用装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
开发人员在运用Java语言进行编程的过程中,为了解决Java语言重复编写等问题,提出了基于Java语言的Spring框架。Spring框架中保留了大量用于编程的通用代码,使得开发人员在软件开发的过程中,无需关注编程中均需使用到的通用代码,而只需关注与该编程所要针对的业务相关的代码,即业务代码。
尽管Spring框架通过注入通用代码的方式降低了通过Java语言进行编程的复杂性,但是在程序编写过程中,编写调用业务代码的代码仍然是一个复杂的过程。
在通用的Spring框架中,包含有唯一的Spring容器,为了避免业务代码的重复编写,开发人员通常会针对各个业务预先编写相应的业务代码,即本申请所述的策略实现,并将编写好的策略实现保存到Spring容器中。当开发人员想要调用某一策略实现时,只需从Spring容器中找到相应的策略实现,调用写好的策略实现即可。
然而,在相关技术中,调用策略实现是一个相当复杂的过程。当开发人员在Spring容器中找到相应的策略实现时,需要先确定该策略实现所属策略接口(即策略类,可以理解为策略实现所属类别),再基于确定的策略接口编写用于承载该策略实现的代码(为方便介绍,下面以承载代码表述),只有在编写完该承载代码后,才能调用策略实现。
由上述过程可知,在通用的Spring框架中调用编写完成的策略实现仍然是一个相当复杂的过程。
为了解决上述问题,本申请提出了一种策略实现的调用方法。参考图1,图1为本申请一示例性实施例示出的一种策略实现的调用方法。如图1所示,该方法应用于编程设备,所述编程设备可以为PC、手机终端等;所述编程设备预先创建有与策略接口对应的策略容器,针对各个策略容器内承载的策略实现建立有策略实现和策略实现标识的映射关系;该方法可以包括以下步骤:
步骤S102,当检测到针对目标策略实现的调用指令时,读取所述调用指令中包含的策略实现标识和与所述目标策略实现对应的目标策略接口。
为了方便表述,本说明书引入策略容器的概念,策略容器理解为:一方面用于承载策略实现以完成策略实现的调用(作用相当于由开发人员手动编写的用于承载策略实现的承载代码);另一方面用于对策略实现按照所属策略接口的不同类型进行划分,实现了开发人员对策略实现的分类管理。
在本实施例中,开发人员针对不同的业务预先编写有相应的策略实现,并根据策略实现所属的策略接口保存在相应的策略容器中。当开发人员想要实现某个待实现业务时,只需从相应的策略容器中调用特定的策略实现即可。
在本实施例中,编程设备中的策略接口与业务类型一一对应,任一策略容器内承载的策略实现属于同一业务类型,调用指令中包含的目标策略接口为所述目标策略实现所属业务类型对应的策略接口。
换言之,为了调用目标策略实现,在调用指令中需要包含该目标策略实现所属的策略接口,以及与目标策略实现对应的策略实现标识。其中,目标策略实现及其对应的策略实现标识可由开发人员在预先编写好的代码中查找得到;同理,目标策略实现对应的策略接口也可以通过该方式得到。
其中,开发人员在获取到目标策略实现对应的策略实现标识后,可以通过编程设备的编程界面输入目标策略实现对应的策略实现标识以及目标策略接口,以调用该目标策略实现。
步骤S104,根据所述目标策略接口确定对应的目标策略容器。
在Spring框架中,包含唯一的Spring容器,在相关技术中,通常会将编写好的所有策略实现均存放在该Spring容器中。
而在本实施例中,会基于不同的策略接口创建不同的策略容器,并将Spring容器中存放的策略实现根据所属策略接口的不同存放至不同的策略容器中。其中,各个策略容器由调用Spring框架中的容器生成工具生成,该容器生成工具基于Spring框架的FactoryBean特性定义得到。
在一般情况下,容器生成工具由开发人员基于Spring框架的FactoryBean特性针对不同的策略接口定义得到,然后再通过定义得到的针对不同策略接口的容器生成工具生成各个策略接口对应的策略容器。
在生成策略容器之后,还可以将属于不同策略接口的策略实现保存至相应的策略容器中。其中,任一策略容器内承载的策略实现可以通过以下方式得到:首先,根据任一策略容器确定与之对应的特定策略接口;然后,从Spring容器中查找与该特定策略接口对应的至少一个策略实现,并将其读取;最后,将读取到的策略实现加入与该特定策略容器中。
步骤S106,根据所述映射关系在所述目标策略容器中查找与所述策略实现标识对应的策略实现,并将查找到的策略实现作为所述目标策略实现。
在本实施例中,需要预先创建策略容器中策略实现与策略实现标识的映射关系。在创建该映射关系时,需要先从Spring容器中读取与读取到的策略实现对应的注解,再根据读取到的策略实现所属策略接口确定对应的自定义注解标识逻辑,然后根据获取到的自定义注解标识逻辑以及读取到的注解给读取到的策略实现配置相应的策略实现标识。其中,自定义注解标识逻辑基于各策略接口对应的业务类型自定义得到。
给读取到的策略实现配置相应策略实现标识的方式使得开发人员在需要调用策略实现时只需提供相应的策略实现标识即可调用策略实现,简化了开发人员调用策略实现的操作难度。
进一步的,针对属于不同策略接口的策略实现,采用不同的自定义注解标识逻辑,能够更好地区分属于不同策略接口的策略实现。实际上,在通用的Spring框架中,针对不同的策略接口采用了相同的自定义注解标识逻辑,而属于不同策略接口的策略实现的注解也可能存在相同的情况,此时,由于注解和自定义注解标识逻辑都相同,使得配置得到的属于不同策略接口的策略实现的策略实现标识相同。如此而言,在通过该策略实现标识调用策略实现时,可能存在调错策略实现以及同时调用两个用于实现不同业务的策略实现的情况。而在本实施例中,由于针对不同的策略接口采用不同的自定义注解标识逻辑,即使注解相同,配置得到的策略实现标识也是不同的,完全不存在调错策略实现以及同时调用多个策略实现的情况。换言之,提高了调用策略实现的准确率。
步骤S108,基于所述目标策略容器承载所述目标策略实现,以用于对所述目标策略实现进行调用。
在本实施例中,策略实现必须承载在相应的策略容器中才能实现调用。因此,在本步骤中,通过目标策略容器承载目标策略实现以调用目标策略实现。
值得注意的是,在实际调用的过程中(即编程的过程中),无论策略容器,还是策略实现,实质上都是代码。所以,在调用过程中是先调用策略容器对应的代码,还是将策略实现与策略容器的代码整合后一起调用,可由本领域技术人员根据实际情况设定,在此不作限定。
由上述技术方案可知,本申请针对各个策略接口预先创建对应的策略容器,使得在调用策略实现的过程中,无需针对各个策略实现编写相应的承载代码,只需根据策略实现所属策略接口即可直接调用相应的策略容器,以用于承载待调用策略实现。通过这样的方式,无需对用于承载策略实现的代码进行编写,降低了软件开发的难度,提高了效率。
由上述内容可知,本申请的技术方案涉及到两个阶段,接下来分别针对两个阶段对本申请的技术方案进行介绍。
1、配置阶段
参考图2,图2为本申请一示例性实施例示出的一种策略容器的生成方法的流程图。如图2所示,该方法应用于编程设备,该方法可以包括以下步骤:
步骤S201,调用针对任一策略接口的容器生成工具。
在本实施例中,开发人员会利用Spring框架的FactoryBean特性,针对每个策略接口自定义相应的容器生成工具,通常情况下开发人员将一个通过FactoryBean特性自定义的容器生成工具称为FactoryBean。
值得注意的是,通过容器生成工具创建的策略容器相较于开发人员针对每个策略接口手动编写的代码要少得多。原因在于,在容器生成工具中会调用生成各个策略容器的一段通用代码,每次生成策略容器均运行一次该代码以及少量与策略接口相关的代码。举例而言,当通过容器生成工具A生成对应于策略接口B的策略容器B+时,容器生成工具A可以直接调用通用生成代码D并加上对应于策略接口B的自定义代码(通常较为少量,由开发人员编写)即可生成策略容器B+。换言之,策略容器B+的代码为:生成代码D的调用指令+对应于策略接口B的自定义代码。显然,相比于针对一个策略实现手动编写的承载代码较为简单。
为方便理解采用容器生成工具前后的差别,可参照以下实际编写的代码。
以下为采用容器生成工具之前,由开发人员手动编写的承载代码。
显然,由上述实际编写的代码可知,在采用容器生成工具之前,开发人员需要编写大量的承载代码,而采用容器生成工具后只需编写少量针对策略接口的自定义代码即可。
除此之外,在自定义容器生成工具的同时,可以一并定义针对各个策略接口对应的自定义注解标识逻辑,以用于后续给策略实现配置相应的策略实现标识。其中,定义好的自定义注解标识逻辑可以包含在相应策略接口对应的容器生成工具中。
通过这样的方式,可以将需要自定义的容器生成工具和自定义注解标识逻辑在一次配置中完成。其次,可以在通过策略接口调用容器生成工具的同时读取容器生成工具中包含的自定义注解标识逻辑,而无需再单独从别的存储空间中调用自定义注解标识逻辑。
步骤S202,通过调用的容器生成工具生成对应于该任一策略接口的策略容器。
步骤S203,从Spring容器中读取对应于该任一策略接口的策略实现以及与读取的策略实现对应的注解。
在Spring容器中,不仅保存了由开发人员预先编写完成的策略实现,还包括与各个策略实现对应的注解。但是,在Spring框架中,无法基于该注解直接调用相应的策略实现。所以必须根据该注解生成相应的标识符才能实现对策略实现的调用。
步骤S204,读取针对该任一策略接口的自定义注解标识逻辑。
在本实施例中,针对各个策略接口的自定义注解标识逻辑由开发人员针对各个策略接口对应的业务类型自定义,通常情况下,该自定义注解标识逻辑可以保存在针对该类策略接口自定义的容器生成工具中。换言之,通常情况下,策略接口、容器生成工具、自定义注解标识逻辑以及业务类型一一对应。
步骤S205,基于读取到的自定义标识逻辑以及读取到的各个策略实现对应的注解给读取到的策略实现配置相应的策略实现标识。
在本实施例中,任一自定义注解标识逻辑可以理解为针对某一策略接口下的不同策略实现对应的注解的标识规则。因此,基于该自定义注解标识逻辑能够给不同的策略实现配置不同的策略实现标识,以在调用时区别各个策略实现。
步骤S206,将读取到的各个策略实现,以及各个策略实现与相应策略实现标识的映射关系加入到生成的策略容器中。
由上述技术方案可知,本申请针对各个策略接口生成了相应的策略容器,并将属于同一策略接口的策略实现保存在相应的策略容器中。换言之,本申请在配置阶段将保存在Spring容器中的策略实现按照所属策略接口进行了划分,使得调用的时候无需遍历所有策略实现,只需在待调用策略实现所属策略接口对应的策略容器中查找即可找到相应的待调用策略实现,减少了需要查找的策略实现基数。
实际上,本申请的技术方案在Spring框架的Spring容器的基础上,进一步创建了策略容器,可以看作是基于Spring框架的一种新的框架,可以称其为策略框架。在该策略框架中,预先建立对应于各个策略接口的策略容器,一方面可以用于承载策略实现,另一方面还可以对策略实现进行划分,有利于简化对策略实现的管理。举例而言,当开发人员需要往策略框架中加入新的策略实现时,只需将编写好的策略实现通过步骤S203-S206的方法加入相应的策略容器即可(该策略容器对应的代码即可作为该新加入容器的承载代码),而无需针对每个新加入的策略实现编写相应的承载代码。
2、调用阶段
参考图3,图3为本申请一示例性实施例示出的另一种策略实现的调用方法的流程图。如图3所示,该方法应用于编程设备,该方法可以包括以下步骤:
步骤S301,当检测到用户输入的调用指令时,读取调用指令中包含的策略实现标识和策略接口。
在本实施例中,编程设备可以通过实时检测的方式,确定是否有开发人员需要调用策略实现以用于实现相应的业务。检测的依据可以为:是否检测到输入的策略实现标识和策略接口。当检测到输入的策略实现标识和策略接口时,确定开发人员需要调用策略实现。其中,检测到的策略实现标识对应的策略实现属于检测到的策略接口。
为方便理解策略实现、策略接口、策略容器以及业务之间的关系,以价格计算业务类和合同编写业务类为例做介绍,参照表1。
表1
由表1可知,开发人员针对价格计算这个业务类,对水果价格计算业务和蔬菜价格计算业务分别编写有策略实现1和策略实现2。而策略实现1和策略实现2同属于策略接口A。在配置阶段,编程设备针对策略接口A创建有相应的策略容器a,用于保存对应于价格计算业务类的策略实现,即策略实现1和策略实现2。同理,合同编写业务类与价格计算业务类相似,在此不作赘述。
因此,当需要调用策略实现1或策略实现2时,只需根据策略接口A找到策略容器a,基于策略实现1或2的策略实现标识在策略容器a中找到策略实现1或2;再将策略实现1或2承载于策略容器a即可完成对策略实现1或2的调用。
在本步骤中,假设开发人员想要实现水果价格计算的业务,那么开发人员会从配置阶段所配置内容中(或者说策略框架中)获取用于实现水果价格计算业务的策略实现1对应的策略实现标识,为方便表述将策略实现1对应的策略实现标识定义为X;同理,也能从配置阶段所配置内容中获知策略实现1所属策略接口为策略接口A。
值得注意的是,在实际情况中,策略接口、策略容器、策略实现及其策略实现标识的命名都会与业务相关,熟知配置内容的本领域技术人员可以根据命名直接得知各个业务对应的策略实现以及所属策略接口等信息,而无需根据配置内容去查找。即便是对配置内容不熟悉的本领域技术人员,由于命名与业务相关,也可以从配置内容中轻易找到需要知晓的内容。举例而言,表1中策略实现1的命名可以为“FruitCalculatePriceStrategy”(水果价格计算策略);策略接口A的命名可以为“CalculatePriceStrategyClass”(价格计算策略类);对应于策略实现1的策略实现标识X可以为“FRUIT”。显然,本领域技术人员可以直接从配置内容中知晓待实现业务对应的策略实现以及对应的策略接口等信息。
步骤S302,根据读取到的策略接口确定对应的策略容器。
承接上一步骤的举例,在本步骤中基于读取到的策略接口A,在配置内容中找到对应的策略容器,举例而言,基于策略接口A找到的策略容器的命名可能为:CalculatePriceStrategyContainer(价格计算策略容器)。
步骤S303,根据读取到的策略实现标识在确定的策略容器中调用与该策略实现标识对应的策略实现。
在本实施例中,由于在步骤S303中已经通过调用指令中的策略接口确定了保存有策略实现的策略容器,所以只需在确定的策略容器中,根据读取到的策略实现标识查找需要调用的策略实现即可。
值得注意的是,在配置的内容中,策略容器中保存策略实现的形式可以为:在策略容器的代码中包含策略实现标识及其指引符,以指引策略实现对应的代码保存的位置。
步骤S304,用确定的策略容器承载读取到的策略实现以调用该策略实现。
在本实施例中,由于策略容器和策略实现实际上都是代码,所以可以在本步骤中将确定的策略实现承载于确定的策略容器后一起调用,即将策略容器对应的代码和策略实现对应的代码整合后一起调用;也可以在确定出策略容器时先调用策略容器对应的代码,当在策略容器中确定出策略实现后,再调用策略实现对应的代码。当然,具体采用哪种调用方式,可以由本领域技术人员根据实际情况采用不同的方式,在此不作限定。
由上述技术方案可知,当开发人员需要调用策略实现时,无需针对待调用策略实现实时编写承载代码,只需通过待调用策略实现所属的策略接口确定相应的策略容器即可实现待调用策略实现的调用。通过这样的方式,避免了承载代码的重复编写,降低了软件开发的难度,提高了效率。
为方便理解本申请的技术方案带来的技术效果,继续以调用水果价格计算业务对应的策略实现1为例。在采用本方案之前,通过Spring框架调用策略实现1,首先需要编写对应于策略接口A的承载代码,再从Spring容器中遍历所有策略实现找到策略实现1,将策略实现1承载于编写好的承载代码以实现调用。换言之,至少需要编写承载代码和策略实现调用的代码。而在采用本申请的技术方案后,只需输入策略实现1对应的标识符X,以及策略接口A即可实现调用。对应到代码中,只需编写两条语句,即能够使编程设备检测到“策略实现1对应的策略实现标识为X、策略实现1对应的策略接口为策略接口A”这两条信息对应的语句,即可调用水果价格计算的策略实现。
图4示出了根据本申请的一示例性实施例的电子设备的示意结构图。请参考图4,在硬件层面,该电子设备包括处理器402、内部总线404、网络接口406、内存408以及非易失性存储器410,当然还可能包括其他业务所需要的硬件。处理器402从非易失性存储器410中读取对应的计算机程序到内存408中然后运行,在逻辑层面上形成策略实现的调用装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图5,在软件实施方式中,策略实现的调用装置可以包括:
读取单元501,当检测到针对目标策略实现的调用指令时,读取所述调用指令中包含的策略实现标识和与所述目标策略实现对应的目标策略接口;
确定单元502,根据所述目标策略接口确定对应的目标策略容器;
查找单元503,根据所述映射关系在所述目标策略容器中查找与所述策略实现标识对应的策略实现,并将查找到的策略实现作为所述目标策略实现;
调用单元504,基于所述目标策略容器承载所述目标策略实现,以用于对所述目标策略实现进行调用。
可选的,所述编程设备的策略接口与业务类型一一对应,任一策略容器内承载的至少一个策略实现属于同一业务类型,所述调用指令中包含的目标策略接口为与所述目标策略实现所属业务类型对应的策略接口。
可选的,各个策略容器由调用Spring框架中的容器生成工具生成,所述容器生成工具基于Spring框架的FactoryBean特性定义得到。
可选的,任一策略容器内承载的策略实现通过以下方式获取:
确定与所述任一策略容器对应的特定策略接口;
读取Spring容器中保存的与所述特定策略接口对应的至少一个策略实现;将读取到的策略实现加入所述任一策略容器。
可选的,所述映射关系通过以下方式得到:
从Spring容器中读取与读取到的策略实现对应的注解;
获取与所述特定策略接口对应的自定义注解标识逻辑;所述自定义注解标识逻辑基于各策略接口对应的业务类型自定义得到;
根据获取到的自定义注解标识逻辑以及读取的注解给读取到的策略实现配置相应的策略实现标识。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由策略实现的调用装置的处理器执行以实现如上述实施例中任一所述的方法,比如该方法可以包括:当检测到针对目标策略实现的调用指令时,读取所述调用指令中包含的策略实现标识和与所述目标策略实现对应的目标策略接口;根据所述目标策略接口确定对应的目标策略容器;根据所述映射关系在所述目标策略容器中查找与所述策略实现标识对应的策略实现,并将查找到的策略实现作为所述目标策略实现;基于所述目标策略容器承载所述目标策略实现,以用于对所述目标策略实现进行调用。
其中,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等,本申请并不对此进行限制。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种策略实现的调用方法,其特征在于,应用于编程设备,所述编程设备预先创建有与策略接口对应的策略容器,针对各个策略容器内承载的策略实现建立有策略实现和策略实现标识的映射关系;所述方法包括:
当检测到针对目标策略实现的调用指令时,读取所述调用指令中包含的策略实现标识和与所述目标策略实现对应的目标策略接口;
根据所述目标策略接口确定对应的目标策略容器;
根据所述映射关系在所述目标策略容器中查找与所述策略实现标识对应的策略实现,并将查找到的策略实现作为所述目标策略实现;
基于所述目标策略容器承载所述目标策略实现,以用于对所述目标策略实现进行调用。
2.根据权利要求1所述的方法,其特征在于,所述编程设备的策略接口与业务类型一一对应,任一策略容器内承载的至少一个策略实现属于同一业务类型,所述调用指令中包含的目标策略接口为与所述目标策略实现所属业务类型对应的策略接口。
3.根据权利要求1所述的方法,其特征在于,各个策略容器由调用Spring框架中的容器生成工具生成,所述容器生成工具基于Spring框架的FactoryBean特性定义得到。
4.根据权利要求1所述的方法,其特征在于,任一策略容器内承载的策略实现通过以下方式获取:
确定与所述任一策略容器对应的特定策略接口;
读取Spring容器中保存的与所述特定策略接口对应的至少一个策略实现;
将读取到的策略实现加入所述任一策略容器。
5.根据权利要求4所述的方法,其特征在于,所述映射关系通过以下方式得到:
从Spring容器中读取与读取到的策略实现对应的注解;
获取与所述特定策略接口对应的自定义注解标识逻辑;所述自定义注解标识逻辑基于各策略接口对应的业务类型自定义得到;
根据获取到的自定义注解标识逻辑以及读取的注解给读取到的策略实现配置相应的策略实现标识。
6.一种策略实现的调用装置,其特征在于,应用于编程设备,所述编程设备预先创建有与策略接口对应的策略容器,针对各个策略容器内承载的策略实现建立有策略实现和策略实现标识的映射关系;所述装置包括:
读取单元,当检测到针对目标策略实现的调用指令时,读取所述调用指令中包含的策略实现标识和与所述目标策略实现对应的目标策略接口;
确定单元,根据所述目标策略接口确定对应的目标策略容器;
查找单元,根据所述映射关系在所述目标策略容器中查找与所述策略实现标识对应的策略实现,并将查找到的策略实现作为所述目标策略实现;
调用单元,基于所述目标策略容器承载所述目标策略实现,以用于对所述目标策略实现进行调用。
7.根据权利要求6所述的装置,其特征在于,所述编程设备的策略接口与业务类型一一对应,任一策略容器内承载的至少一个策略实现属于同一业务类型,所述调用指令中包含的目标策略接口为与所述目标策略实现所属业务类型对应的策略接口。
8.根据权利要求6所述的装置,其特征在于,任一策略容器内承载的策略实现通过以下方式获取:
确定与所述任一策略容器对应的特定策略接口;
读取Spring容器中保存的与所述特定策略接口对应的至少一个策略实现;
将读取到的策略实现加入所述任一策略容器。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-5中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现如权利要求1-5中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010131597.9A CN113326034A (zh) | 2020-02-28 | 2020-02-28 | 策略实现的调用方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010131597.9A CN113326034A (zh) | 2020-02-28 | 2020-02-28 | 策略实现的调用方法及装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113326034A true CN113326034A (zh) | 2021-08-31 |
Family
ID=77413115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010131597.9A Pending CN113326034A (zh) | 2020-02-28 | 2020-02-28 | 策略实现的调用方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113326034A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023226255A1 (zh) * | 2022-05-24 | 2023-11-30 | 青岛海尔科技有限公司 | 基于策略模式的物品查询方法、装置、设备及存储介质 |
-
2020
- 2020-02-28 CN CN202010131597.9A patent/CN113326034A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023226255A1 (zh) * | 2022-05-24 | 2023-11-30 | 青岛海尔科技有限公司 | 基于策略模式的物品查询方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10635408B2 (en) | Method and apparatus for enabling agile development of services in cloud computing and traditional environments | |
CN109710428B (zh) | 一种实现类的动态调用方法及装置 | |
CN111596965B (zh) | 项目工程初始化方法、装置、计算机设备和存储介质 | |
CN110716951B (zh) | 方便配置的标签配置方法、装置、设备及存储介质 | |
CN109710220B (zh) | 关系型数据库查询方法、装置、设备及存储介质 | |
CN111506579B (zh) | 一种智能合约代码的生成方法、程序及设备 | |
CN110032568B (zh) | 数据结构的读取及更新方法、装置、电子设备 | |
CN111367976A (zh) | 基于java反射机制的excel文件数据的导出方法及装置 | |
CN110928548A (zh) | 一种数据处理方法以及设备 | |
CN109597825B (zh) | 规则引擎调用方法、装置、设备及计算机可读存储介质 | |
CN111506314A (zh) | 项目开发的方法、装置、服务器及介质 | |
CN111046640A (zh) | 证明文件动态生成方法及装置 | |
CN116974581B (zh) | 代码生成方法、装置、电子设备和存储介质 | |
CN113326034A (zh) | 策略实现的调用方法及装置、电子设备、存储介质 | |
CN114816170A (zh) | 规则方案生成方法、装置、介质及电子设备 | |
CN115328458B (zh) | 一种业务应用开发方法及装置 | |
CN111488144A (zh) | 一种数据处理方法以及设备 | |
CN102799423A (zh) | Jsf中执行动态方法的方法及装置 | |
CN115934537A (zh) | 接口测试工具生成方法、装置、设备、介质及产品 | |
CN115511644A (zh) | 用于目标保单的处理方法、电子设备和可读存储介质 | |
CN114170007A (zh) | 冲正交易返回报文组装方法、程序产品、介质和电子设备 | |
CN114218261A (zh) | 数据查询方法、装置、存储介质以及电子设备 | |
CN111309319A (zh) | 可继承的局数据动态页面配置方法和装置 | |
CN111596975B (zh) | 事件调用方法、装置、电子设备及存储介质 | |
CN111126015B (zh) | 一种报表编制方法、设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |