CN115033211A - 基于策略模式的物品查询方法、装置、设备及存储介质 - Google Patents

基于策略模式的物品查询方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN115033211A
CN115033211A CN202210570976.7A CN202210570976A CN115033211A CN 115033211 A CN115033211 A CN 115033211A CN 202210570976 A CN202210570976 A CN 202210570976A CN 115033211 A CN115033211 A CN 115033211A
Authority
CN
China
Prior art keywords
strategy
policy
query
item
user information
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
Application number
CN202210570976.7A
Other languages
English (en)
Inventor
孙飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qingdao Haier Technology Co Ltd
Haier Smart Home Co Ltd
Original Assignee
Qingdao Haier Technology Co Ltd
Haier Smart Home Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qingdao Haier Technology Co Ltd, Haier Smart Home Co Ltd filed Critical Qingdao Haier Technology Co Ltd
Priority to CN202210570976.7A priority Critical patent/CN115033211A/zh
Publication of CN115033211A publication Critical patent/CN115033211A/zh
Priority to PCT/CN2022/119705 priority patent/WO2023226255A1/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种基于策略模式的物品查询方法、装置、设备及存储介质。该方法包括:响应于用户的物品查询指令,确定用户信息和待查询物品的物品信息;其中,物品查询指令用于表征对待查询物品进行查询;根据用户信息,从预设的策略对象中确定与用户信息关联的策略对象;其中,策略对象用于表征查询物品所需执行的逻辑代码;根据待查询物品的物品信息,执行与用户信息关联的策略对象中的逻辑代码,对待查询物品进行查询。本申请的方法,基于策略模式确定策略对象,根据策略对象中查询物品的逻辑代码进行查询,避免采用选择分支语句进行物品查询,实现将主程序代码与策略对象的逻辑代码分离,减少代码的修改错误,提高物品查询精度。

Description

基于策略模式的物品查询方法、装置、设备及存储介质
技术领域
本申请涉及计算机技术,尤其涉及一种基于策略模式的物品查询方法、装置、设备及存储介质。
背景技术
不同身份的用户对不同店铺类型中商品的查询逻辑类型不同,例如,消费者查询物品的逻辑与店主查询物品的逻辑类型不同,消费者可以查询店铺中所有展示出的物品,店主可以查询店铺库存中的物品。
现有技术中,在进行物品的查询时,是采用if-else或者switch-case的选择语句。在主程序中添加选择分支,当存在对应选择分支的逻辑类型时,执行该选择分支下的逻辑代码,进行物品的查询。
但是,这种方法中主程序和各逻辑类型的分支程序为一个整体,无法单独进行开发测试。每当有新增的逻辑类型时,需要改动主程序,增加新的选择分支,导致整体代码需要重新编排和测试,浪费开发测试的人力和时间,出现错误的概率高,影响物品查询的效率和精度。
发明内容
本申请提供一种基于策略模式的物品查询方法、装置、设备及存储介质,用以提高物品查询的精度。
一方面,本申请提供一种基于策略模式的物品查询方法,包括:
响应于用户的物品查询指令,确定用户信息和待查询物品的物品信息;其中,所述物品查询指令用于表征对待查询物品进行查询;
根据所述用户信息,从预设的策略对象中确定与所述用户信息关联的策略对象;其中,所述策略对象用于表征查询物品所需执行的逻辑代码;
根据所述待查询物品的物品信息,执行与所述用户信息关联的策略对象中的逻辑代码,对所述待查询物品进行查询。
另一方面,本申请提供一种基于策略模式的物品查询装置,包括:
物品查询指令响应模块,用于响应于用户的物品查询指令,确定用户信息和待查询物品的物品信息;其中,所述物品查询指令用于表征对待查询物品进行查询;
策略对象确定模块,用于根据所述用户信息,从预设的策略对象中确定与所述用户信息关联的策略对象;其中,所述策略对象用于表征查询物品所需执行的逻辑代码;
物品查询模块,用于根据所述待查询物品的物品信息,执行与所述用户信息关联的策略对象中的逻辑代码,对所述待查询物品进行查询。
另一方面,本申请提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如本申请任意实施例所述的基于策略模式的物品查询方法。
另一方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如本申请任意实施例所述的基于策略模式的物品查询方法。
另一方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如本申请任意实施例所述的基于策略模式的物品查询方法。
本申请提供一种基于策略模式的物品查询方法、装置、设备及存储介质,该方法中的策略模式是对算法的封装,策略模式可以将算法封装到策略实现类中,策略实现类可以生成策略对象,进行物品查询的逻辑代码的执行。本申请通过响应用户发出的物品查询指令,确定用户信息和待查询物品的物品信息。根据用户信息,从预设的多种策略对象中确定出一种策略对象,并根据待查询物品的物品信息,执行该策略对象中的逻辑代码。避免了现有技术中,根据主程序中选择分支的语句确定用户信息对应的逻辑代码的过程,使主程序的代码和物品查询的逻辑代码相互分离。当有新增的逻辑类型时,不需要改动主程序,节约开发测试的人力和时间,减少出现错误的概率,提高物品查询的效率和精度。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种基于策略模式的物品查询方法的流程示意图;
图2为本申请实施例提供的一种基于策略模式的物品查询方法的流程示意图;
图3为本申请实施例提供的一种基于策略模式的物品查询方法的流程示意图;
图4为本申请实施例提供的一种基于策略模式的物品查询装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。
应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的设备和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”、“第三”等仅用于区别类似的对象,而不必用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
需要注意的是,由于篇幅所限,本申请说明书没有穷举所有可选的实施方式,本领域技术人员在阅读本申请说明书后,应该能够想到,只要技术特征不互相矛盾,那么技术特征的任意组合均可以构成可选的实施方式。下面对各实施例进行详细说明。
图1是根据本申请实施例一提供的一种基于策略模式的物品查询方法的流程示意图,本实施例提供的方法由一种基于策略模式的物品查询装置执行。如图1所示,该方法包括以下步骤:
S101、响应于用户的物品查询指令,确定用户信息和待查询物品的物品信息;其中,物品查询指令用于表征对待查询物品进行查询。
其中,物品可以是店铺中的商品,用户可以是消费者、店主或合伙人等身份。同样的物品可以存在于不同的店铺中,即,各个店铺中的物品可以相同,也可以不同。本申请实施例中的店铺是线上店铺,店铺可以包括旗舰店、生态店和品牌店等。用户可以在线上店铺的系统中进行物品的查询或购买,例如,用户发出物品查询指令,可以对某个店铺中的物品进行查询,也可以不针对某一个店铺,对各个店铺中的物品进行查询。
用户发出物品查询指令,物品查询指令中可以包括用户信息和待查询物品的物品信息。用户信息可以包括用户的账号名称和密码等,待查询物品的物品信息可以包括待查询物品的名称和型号等。响应到用户发起的物品查询指令,确定需要对待查询物品进行查询。例如,用户针对冰箱发起了物品查询请求,则可以确定需要对线上所有店铺中的冰箱进行查询。
用户信息中还可以包括用户身份,用户在线上店铺的系统上注册账号时,可以选择用户身份,即,用户身份可以与用户账号等信息进行关联。在接收到物品查询指令后,可以直接得到用户身份,也可以根据用户账号等信息确定用户身份。例如,用户可以作为消费者,对物品进行查询。
用户可以针对某一个店铺发出物品查询指令,例如,线上店铺的系统中有一号店和二号店,用户可以查询二号店中的物品。用户也可以对所有店铺中的物品进行查询,例如,用户想要查询冰箱,则可以对所有店铺的冰箱进行查询。若用户针对某一店铺进行物品查询,则查询结果可以是该店铺中的待查询物品;若用户没有针对某一店铺进行查询,则查询结果可以是所有店铺中的待查询物品,也可以为用户选择一个店铺,只展示该店铺中的待查询物品。例如,可以根据用户信息中的用户IP地址,为用户选择发货距离较近的店铺。
S102、根据用户信息,从预设的策略对象中确定与用户信息关联的策略对象;其中,策略对象用于表征查询物品所需执行的逻辑代码。
其中,可以预先设定多种策略对象,策略对象可以是封装的算法代码,用于表示在进行物品查询时,所需执行的逻辑代码。例如,策略对象中可以包括查询物品所需的数据库等。可以预先设置用户信息与策略对象之间的关联关系,例如,可以设置不同用户身份与策略对象之间的关联关系。若用户身份为店主,则可以采用策略对象一;若用户身份为消费者,则可以采用策略对象二。
在确定用户信息后,可以根据预设的用户信息与策略对象之间的关联关系,确定与用户信息关联的策略对象。
本实施例中,策略模式(Strategy Pattern)可以是定义一系列物品查询逻辑的算法,将每一个查询逻辑的算法封装起来,并让它们可以相互替换。策略模式通常把一个系列的算法封装到一系列的类里面,得到策略实现类,调用策略实现类可以得到策略对象。策略实现类中包括进行物品查询的逻辑代码,策略对象可以执行该代码。策略实现类也可以与用户信息进行关联存储。
可以在物品查询之前,预先调用一次各个策略实现类,得到各个策略实现类对应的策略对象,得到用户信息与策略对象之间的关联关系,从而根据用户信息得到对应的策略对象。也可以在物品查询时,先根据用户信息与策略实现类之间的关联关系,确定与用户信息对应的策略实现类,再根据策略实现类,得到策略对象。
使用策略模式封装不同查询逻辑类型的策略实现类,得到策略对象,可以实现在新增查询逻辑类型时,主程序的逻辑固定不动,开发时只需单独编写新增的逻辑代码进行封装。例如,主程序可以用于响应用户的物品查询指令,确定用户信息和待查询物品的物品信息等。公共的主程序在预设模板中已定义,整体不需要重新编排,测试也只需要测试新增的逻辑代码即可,极大降低出现问题的概率,减少了开发测试的时间成本。
S103、根据待查询物品的物品信息,执行与用户信息关联的策略对象中的逻辑代码,对待查询物品进行查询。
其中,策略对象中的逻辑代码可以表示如何进行物品查询,即物品查询的逻辑,待查询物品的物品信息表示待查询的物品。在确定与用户信息关联的策略对象后,根据待查询物品的物品信息和策略对象的逻辑代码,可以确定如何对待查询物品进行查询。例如,策略对象可以用于根据逻辑代码从数据库一中进行物品查询,物品信息为待查询物品的名称“冰箱”,则可以执行策略对象的逻辑代码,从数据库一种查询“冰箱”这一物品。查询结果可以是待查询物品的所在店铺或物品库存等信息,可以将查询结果进行展示,供用户参考。
本申请实施例提供了一种基于策略模式的物品查询方法,该方法中的策略模式是对算法的封装,策略模式可以将算法封装到策略实现类中,策略实现类可以生成策略对象,进行物品查询的逻辑代码的执行。本申请通过响应用户发出的物品查询指令,确定用户信息和待查询物品的物品信息。根据用户信息,从预设的多种策略对象中确定出一种策略对象,并根据待查询物品的物品信息,执行该策略对象中的逻辑代码。避免了现有技术中,根据主程序中选择分支的语句确定用户信息对应的逻辑代码的过程,使主程序的代码和物品查询的逻辑代码相互分离。当有新增的逻辑类型时,不需要改动主程序,节约开发测试的人力和时间,减少出现错误的概率,提高物品查询的效率和精度。
图2为本申请实施例提供的一种基于策略模式的物品查询方法的流程示意图,该实施例是在上述实施例基础上的可选实施例。
本实施例中,根据用户信息,从预设的策略对象中确定与用户信息关联的策略对象,可细化为:根据用户信息,从预设的查询逻辑类型中确定与用户信息关联的查询逻辑类型;其中,查询逻辑类型表征查询物品所需执行的逻辑的种类;根据与用户信息关联的查询逻辑类型,从预设的策略对象中确定与用户信息关联的查询逻辑类型所对应的策略对象。
如图2所示,该方法包括以下步骤:
S201、响应于用户的物品查询指令,确定用户信息和待查询物品的物品信息;其中,物品查询指令用于表征对待查询物品进行查询。
S202、根据用户信息,从预设的查询逻辑类型中确定与用户信息关联的查询逻辑类型;其中,查询逻辑类型表征查询物品所需执行的逻辑的种类。
其中,预先配置不同用户信息与查询逻辑类型之间的关联关系,查询逻辑类型可以是指查询物品时所需执行的逻辑的种类。例如,预先设置多种类型,作为查询逻辑类型,每种类型对应一种查询逻辑,各个类型的查询逻辑可以根据实际需求进行设定。例如,设置两种查询逻辑类型,第一种查询逻辑类型是从数据库一中查询物品,第二种查询逻辑类型是从数据表三中查询物品。
不同用户在查询物品时所应用的查询逻辑类型可以不同,例如,可以为不同的用户身份配置对应的查询逻辑类型。若增加了新的用户身份等用户信息,则可以配置新的查询逻辑类型。不同用户身份的用户在查询物品时,物品的查询逻辑类型可以不同;同样用户身份的用户在查询不同店铺的物品时,物品的查询逻辑类型也可以不同。
在得到用户信息后,可以从预设的多种查询逻辑类型中,查询与该用户信息关联的查询逻辑类型,作为目标查询逻辑类型。
S203、根据与用户信息关联的查询逻辑类型,从预设的策略对象中确定与用户信息关联的查询逻辑类型所对应的策略对象。
其中,工作人员预先对于不同的查询逻辑类型编写对应的策略实现类,即预先设置查询逻辑类型与策略实现类之间的关联关系。每个策略实现类可以生成一个策略对象,因此,可以得到查询逻辑类型与策略对象之间的关联关系。
预设的策略对象是已经调用过策略实现类,所生成的策略对象。每个策略实现类可以生成一个策略对象,在初次调用策略实现类时,会生成对应的策略对象,后续若还需要调用相同的策略实现类,则可以直接使用对应的策略对象。
在确定目标查询逻辑类型后,根据查询逻辑类型与策略对象之间的关联关系,确定与目标查询逻辑类型关联的策略对象,作为目标策略对象。目标策略对象即为与用户信息关联的策略对象。
本实施例中,根据与用户信息关联的查询逻辑类型,从预设的策略对象中确定与用户信息关联的查询逻辑类型所对应的策略对象,包括:根据与用户信息关联的查询逻辑类型,以及预设的查询逻辑类型与策略标识之间的关联关系,确定与用户信息关联的查询逻辑类型对应的目标策略标识;根据目标策略标识,以及预设的策略标识与策略对象之间的关联关系,确定与目标策略标识对应的策略对象。
具体的,为每个策略实现类配置一个策略标识,例如,每编写完成一个策略实现类就分配一个策略标识。即,每个策略对象可以对应一个策略标识。查询逻辑类型与策略实现类相互关联,因此,每个查询逻辑类型可以对应一个策略标识。例如,可以采用KV(key-Value,关键词-值)的格式存储查询逻辑类型和策略标识之间的关联关系。
在确定目标查询逻辑类型后,根据查询逻辑类型和策略标识之间的关联关系,确定与目标查询逻辑类型关联的策略标识,作为目标策略标识。再根据策略标识与策略对象之间的关联关系,确定与目标策略标识对应的策略对象,作为目标策略对象。
这样设置的有益效果在于,根据唯一的策略标识,可以快速确定目标策略对象,避免策略对象确定错误,提高策略对象的确定精度和效率,进而提高物品查询的效率和精度,也避免了程序中选择分支的语句的编写,减轻工作人员的开发测试的负担。
本实施例中,根据目标策略标识,以及预设的策略标识与策略对象之间的关联关系,确定与目标策略标识对应的策略对象,包括:若根据目标策略标识,以及预设的策略标识与策略对象之间的关联关系,确定不存在与目标策略标识对应的策略对象,则根据与用户信息关联的查询逻辑类型,从预先编写的策略实现类中确定目标策略实现类;调用目标策略实现类,生成与目标策略标识对应的策略对象。
具体的,策略对象在初次调用对应的策略实现类后才会生成,若没有调用过策略实现类,则不存在对应的策略对象。
在确定目标策略标识后,先判断是否存在与目标策略标识关联的策略对象,若存在,则直接得到与目标策略标识关联的目标策略对象;若不存在,则说明目标策略标识对应的策略实现类还未被调用过。从预先编写的多个策略实现类中确定与目标策略标识对应的策略实现类,作为目标策略实现类,目标策略实现类也与目标查询逻辑类型关联。调用目标策略实现类,得到目标策略实现类对应的策略对象,即为目标策略对象。在后续进行目标查询逻辑类型的物品查询时,可以直接使用目标策略对象。
这样设置的有益效果在于,策略对象只需要在初次调用对应的策略实现类时生成即可,在查找目标策略对象时,若没有目标策略对象,则可以初次调用对应的策略实现类,便于后续对目标策略对象的使用,提高物品查询的效率。
本实施例中,在调用目标策略实现类,生成与目标策略标识对应的策略对象之后,还包括:采用哈希映射,将与目标策略实现类对应的策略对象和目标策略标识进行关联存储。
具体的,策略标识与策略实现类一一对应,在生成策略实现类的策略对象后,策略标识可以与策略对象一一对应。在生成目标策略对象后,将目标策略实现类的策略标识与目标策略对象进行关联存储。本实施例中,可以采用HashMap(哈希映射)存储唯一的策略标识和策略对象。
本实施例中,还可以使用HashMap存储查询逻辑类型与唯一策略标识之间的关联关系。当用户需要查询物品时,根据目标查询逻辑类型,从HashMap中获取目标策略标识,再根据目标策略标识确定对应的目标策略对象,执行查询商品的逻辑。
这样设置的有益效果在于,通过哈希映射,可以采用KV的方式进行关联关系的存储,便于找到目标策略对象,提高目标策略对象的确定精度和效率。
本实施例中,在根据Spring控制反转,从预设的工厂类中调用目标策略实现类,得到与目标策略标识对应的策略对象之前,还包括:获取预先编写的策略实现类,将策略实现类聚合至预设的工厂类中。
具体的,对于不同的查询逻辑类型编写策略实现类,获取预先编写的各个策略实现类,通过Spring IOC(Spring Inversion of Control,Spring控制反转)将所有的策略实现类聚合到工厂类。
策略实现类可以基于预设的接口实现,策略实现类为基础模板,可以定义通用的查询商品方法和填充店铺方法等。依据每个用户身份编写策略实现类,策略实现类可以一直扩展,可以在不修改原有主程序的基础上,提高商品查询的业务扩展能力。并简化了业务扩展的成本,主程序与逻辑分支实现隔离,主程序更加简洁,降低了代码后期的运维成本。
本实施例中,调用目标策略实现类,生成与目标策略标识对应的策略对象,包括:根据Spring控制反转,从预设的工厂类中调用目标策略实现类,得到与目标策略标识对应的策略对象。
具体的,通过Spring控制反转,从预设的工厂类中调用目标策略实现类,生成目标策略对象。将目标策略对象编排到策略工厂,通过配置的查询逻辑类型与策略标识的关系获取对应的策略对象,执行具体逻辑。通过生成策略对象,不需要在主程序中编写选择语句,避免主程序冗余,提高业务扩展的灵活性。
S204、根据待查询物品的物品信息,执行与用户信息关联的策略对象中的逻辑代码,对待查询物品进行查询。
本申请实施例中的策略模式是对算法的封装,策略模式可以将算法封装到策略实现类中,策略实现类可以生成策略对象,进行物品查询的逻辑代码的执行。本申请通过响应用户发出的物品查询指令,确定用户信息和待查询物品的物品信息。根据用户信息,从预设的多种策略对象中确定出一种策略对象,并根据待查询物品的物品信息,执行该策略对象中的逻辑代码。避免了现有技术中,根据主程序中选择分支的语句确定用户信息对应的逻辑代码的过程,使主程序的代码和物品查询的逻辑代码相互分离。当有新增的逻辑类型时,不需要改动主程序,节约开发测试的人力和时间,减少出现错误的概率,提高物品查询的效率和精度,以及业务扩展的灵活性。
图3为本申请实施例提供的一种基于策略模式的物品查询方法的流程示意图,该实施例是在上述实施例基础上的可选实施例。
本实施例中,根据待查询物品的物品信息,执行与用户信息关联的策略对象中的逻辑代码,可细化为:将待查询物品的名称作为与用户信息关联的策略对象的输入参数,并根据输入参数执行与用户信息关联的策略对象中的逻辑代码。
如图3所示,该方法包括以下步骤:
S301、响应于用户的物品查询指令,确定用户信息和待查询物品的物品信息;其中,物品查询指令用于表征对待查询物品进行查询。
S302、根据用户信息,从预设的策略对象中确定与用户信息关联的策略对象;其中,策略对象用于表征查询物品所需执行的逻辑代码。
S303、将待查询物品的名称作为与用户信息关联的策略对象的输入参数,并根据输入参数执行与用户信息关联的策略对象中的逻辑代码,对待查询物品进行查询。
其中,策略对象中的逻辑代码可以表示如何查询到待查询物品,但无法确定具体查询什么待查询物品。在确定与用户信息关联的策略对象后,即在确定目标策略对象后,待查询物品的物品信息可以作为目标策略对象的入参,即可以确定通过目标策略对象所需查询的物品。待查询物品的物品信息可以包括待查询物品的名称,将待查询物品的名称作为与用户信息关联的策略对象的入参,根据入参执行与用户信息关联的策略对象中的逻辑代码,实现对待查询物品进行查询。
例如,目标策略对象可以确定从数据库一种进行物品查询,但是数据库一中存在多种物品,目标策略对象无法直接通过逻辑代码从数据库一种查询其中的物品。将待查询物品的名称作为入参,待查询物品的名称可以是“空调”,则可以根据目标策略对象从数据库一中查找到“空调”。实现了通过同样的策略对象,对待查询物品进行精确查询。
本申请实施例中的策略模式是对算法的封装,策略模式可以将算法封装到策略实现类中,策略实现类可以生成策略对象,进行物品查询的逻辑代码的执行。本申请通过响应用户发出的物品查询指令,确定用户信息和待查询物品的物品信息。根据用户信息,从预设的多种策略对象中确定出一种策略对象,并根据待查询物品的物品信息,执行该策略对象中的逻辑代码。避免了现有技术中,根据主程序中选择分支的语句确定用户信息对应的逻辑代码的过程,使主程序的代码和物品查询的逻辑代码相互分离。当有新增的逻辑类型时,不需要改动主程序,节约开发测试的人力和时间,减少出现错误的概率,提高物品查询的效率和精度。
图4为本申请实施例提供的一种基于策略模式的物品查询装置的结构示意图,该装置可以通过软件、硬件或者两者的结合实现。如图4所示,该装置包括:物品查询指令响应模块401、策略对象确定模块402和物品查询模块403。
物品查询指令响应模块401,用于响应于用户的物品查询指令,确定用户信息和待查询物品的物品信息;其中,所述物品查询指令用于表征对待查询物品进行查询;
策略对象确定模块402,用于根据所述用户信息,从预设的策略对象中确定与所述用户信息关联的策略对象;其中,所述策略对象用于表征查询物品所需执行的逻辑代码;
物品查询模块403,用于根据所述待查询物品的物品信息,执行与所述用户信息关联的策略对象中的逻辑代码,对所述待查询物品进行查询。
可选的,策略对象确定模块402,包括:
查询逻辑类型确定单元,用于根据所述用户信息,从预设的查询逻辑类型中确定与所述用户信息关联的查询逻辑类型;其中,所述查询逻辑类型表征查询物品所需执行的逻辑的种类;
策略对象查找单元,用于根据与所述用户信息关联的查询逻辑类型,从预设的策略对象中确定与所述用户信息关联的查询逻辑类型所对应的策略对象。
可选的,策略对象查找单元,包括:
目标策略标识确定子单元,用于根据与所述用户信息关联的查询逻辑类型,以及预设的查询逻辑类型与策略标识之间的关联关系,确定与所述用户信息关联的查询逻辑类型对应的目标策略标识;
策略对象确认子单元,用于根据所述目标策略标识,以及预设的策略标识与策略对象之间的关联关系,确定与所述目标策略标识对应的策略对象。
可选的,策略对象确认子单元,包括:
目标策略实现类确定从单元,用于若根据所述目标策略标识,以及预设的策略标识与策略对象之间的关联关系,确定不存在与所述目标策略标识对应的策略对象,则根据与所述用户信息关联的查询逻辑类型,从预先编写的策略实现类中确定目标策略实现类;
策略对象生成从单元,用于调用所述目标策略实现类,生成与所述目标策略标识对应的策略对象。
可选的,该装置还包括:
策略对象存储模块,用于在调用所述目标策略实现类,生成与所述目标策略标识对应的策略对象之后,采用哈希映射,将与所述目标策略实现类对应的策略对象和所述目标策略标识进行关联存储。
可选的,策略对象生成从单元,具体用于:
根据Spring控制反转,从预设的工厂类中调用所述目标策略实现类,得到与所述目标策略标识对应的策略对象。
可选的,该装置还包括:
策略实现类聚合模块,用于在根据Spring控制反转,从预设的工厂类中调用所述目标策略实现类,得到与所述目标策略标识对应的策略对象之前,获取预先编写的策略实现类,将所述策略实现类聚合至预设的工厂类中。
可选的,用户信息包括用户身份,所述待查询物品的物品信息包括待查询物品的名称。
可选的,物品查询模块403,具体用于:
将所述待查询物品的名称作为与所述用户信息关联的策略对象的输入参数,并根据所述输入参数执行与所述用户信息关联的策略对象中的逻辑代码。
本申请实施例中的策略模式是对算法的封装,策略模式可以将算法封装到策略实现类中,策略实现类可以生成策略对象,进行物品查询的逻辑代码的执行。本申请通过响应用户发出的物品查询指令,确定用户信息和待查询物品的物品信息。根据用户信息,从预设的多种策略对象中确定出一种策略对象,并根据待查询物品的物品信息,执行该策略对象中的逻辑代码。避免了现有技术中,根据主程序中选择分支的语句确定用户信息对应的逻辑代码的过程,使主程序的代码和物品查询的逻辑代码相互分离。当有新增的逻辑类型时,不需要改动主程序,节约开发测试的人力和时间,减少出现错误的概率,提高物品查询的效率和精度。
图5是根据一示例性实施例示出的一种电子设备的结构示意图,该设备可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
设备500可以包括以下一个或多个组件:处理组件502,存储器504,电源组件506,多媒体组件508,音频组件510,输入/输出(I/O)接口512,传感器组件514,以及通信组件516。
处理组件502通常控制设备500的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件502可以包括一个或多个处理器520来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便于处理组件502和其他组件之间的交互。例如,处理组件502可以包括多媒体模块,以方便多媒体组件508和处理组件502之间的交互。
存储器504被配置为存储各种类型的数据以支持在设备500的操作。这些数据的示例包括用于在设备500上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器504可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件506为设备500的各种组件提供电力。电源组件506可以包括电源管理系统,一个或多个电源,及其他与为设备500生成、管理和分配电力相关联的组件。
多媒体组件508包括在所述设备500和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件508包括一个前置摄像头和/或后置摄像头。当设备500处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件510被配置为输出和/或输入音频信号。例如,音频组件510包括一个麦克风(MIC),当设备500处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器504或经由通信组件516发送。在一些实施例中,音频组件510还包括一个扬声器,用于输出音频信号。
I/O接口512为处理组件502和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件514包括一个或多个传感器,用于为设备500提供各个方面的状态评估。例如,传感器组件514可以检测到设备500的打开/关闭状态,组件的相对定位,例如所述组件为设备500的显示器和小键盘,传感器组件514还可以检测设备500或设备500一个组件的位置改变,用户与设备500接触的存在或不存在,设备500方位或加速/减速和设备500的温度变化。传感器组件514可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件514还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件514还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件516被配置为便于设备500和其他设备之间有线或无线方式的通信。设备500可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件516经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件516还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,设备500可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器504,上述指令可由设备500的处理器520执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当该存储介质中的指令由终端设备的处理器执行时,使得终端设备能够执行上述终端设备的基于策略模式的物品查询方法。
本申请还公开了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如本实施例中所述的基于策略模式的物品查询方法。
本申请以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本申请的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或电子设备上执行。
在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据电子设备)、或者包括中间件部件的计算系统(例如,应用电子设备)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和电子设备。客户端和电子设备一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-电子设备关系的计算机程序来产生客户端和电子设备的关系。电子设备可以是云电子设备,又称为云计算电子设备或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。电子设备也可以为分布式系统的电子设备,或者是结合了区块链的电子设备。应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

Claims (13)

1.一种基于策略模式的物品查询方法,其特征在于,包括:
响应于用户的物品查询指令,确定用户信息和待查询物品的物品信息;其中,所述物品查询指令用于表征对待查询物品进行查询;
根据所述用户信息,从预设的策略对象中确定与所述用户信息关联的策略对象;其中,所述策略对象用于表征查询物品所需执行的逻辑代码;
根据所述待查询物品的物品信息,执行与所述用户信息关联的策略对象中的逻辑代码,对所述待查询物品进行查询。
2.根据权利要求1所述的方法,其特征在于,根据所述用户信息,从预设的策略对象中确定与所述用户信息关联的策略对象,包括:
根据所述用户信息,从预设的查询逻辑类型中确定与所述用户信息关联的查询逻辑类型;其中,所述查询逻辑类型表征查询物品所需执行的逻辑的种类;
根据与所述用户信息关联的查询逻辑类型,从预设的策略对象中确定与所述用户信息关联的查询逻辑类型所对应的策略对象。
3.根据权利要求2所述的方法,其特征在于,根据与所述用户信息关联的查询逻辑类型,从预设的策略对象中确定与所述用户信息关联的查询逻辑类型所对应的策略对象,包括:
根据与所述用户信息关联的查询逻辑类型,以及预设的查询逻辑类型与策略标识之间的关联关系,确定与所述用户信息关联的查询逻辑类型对应的目标策略标识;
根据所述目标策略标识,以及预设的策略标识与策略对象之间的关联关系,确定与所述目标策略标识对应的策略对象。
4.根据权利要求3所述的方法,其特征在于,根据所述目标策略标识,以及预设的策略标识与策略对象之间的关联关系,确定与所述目标策略标识对应的策略对象,包括:
若根据所述目标策略标识,以及预设的策略标识与策略对象之间的关联关系,确定不存在与所述目标策略标识对应的策略对象,则根据与所述用户信息关联的查询逻辑类型,从预先编写的策略实现类中确定目标策略实现类;
调用所述目标策略实现类,生成与所述目标策略标识对应的策略对象。
5.根据权利要求4所述的方法,其特征在于,在调用所述目标策略实现类,生成与所述目标策略标识对应的策略对象之后,还包括:
采用哈希映射,将与所述目标策略实现类对应的策略对象和所述目标策略标识进行关联存储。
6.根据权利要求4所述的方法,其特征在于,调用所述目标策略实现类,生成与所述目标策略标识对应的策略对象,包括:
根据Spring控制反转,从预设的工厂类中调用所述目标策略实现类,得到与所述目标策略标识对应的策略对象。
7.根据权利要求6所述的方法,其特征在于,在根据Spring控制反转,从预设的工厂类中调用所述目标策略实现类,得到与所述目标策略标识对应的策略对象之前,还包括:
获取预先编写的策略实现类,将所述策略实现类聚合至预设的工厂类中。
8.根据权利要求1所述的方法,其特征在于,所述用户信息包括用户身份,所述待查询物品的物品信息包括待查询物品的名称。
9.根据权利要求8所述的方法,其特征在于,根据所述待查询物品的物品信息,执行与所述用户信息关联的策略对象中的逻辑代码,包括:
将所述待查询物品的名称作为与所述用户信息关联的策略对象的输入参数,并根据所述输入参数执行与所述用户信息关联的策略对象中的逻辑代码。
10.一种基于策略模式的物品查询装置,其特征在于,包括:
物品查询指令响应模块,用于响应于用户的物品查询指令,确定用户信息和待查询物品的物品信息;其中,所述物品查询指令用于表征对待查询物品进行查询;
策略对象确定模块,用于根据所述用户信息,从预设的策略对象中确定与所述用户信息关联的策略对象;其中,所述策略对象用于表征查询物品所需执行的逻辑代码;
物品查询模块,用于根据所述待查询物品的物品信息,执行与所述用户信息关联的策略对象中的逻辑代码,对所述待查询物品进行查询。
11.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-9中任一项所述的基于策略模式的物品查询方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-9中任一项所述的基于策略模式的物品查询方法。
13.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现如权利要求1-9中任一项所述的基于策略模式的物品查询方法。
CN202210570976.7A 2022-05-24 2022-05-24 基于策略模式的物品查询方法、装置、设备及存储介质 Pending CN115033211A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210570976.7A CN115033211A (zh) 2022-05-24 2022-05-24 基于策略模式的物品查询方法、装置、设备及存储介质
PCT/CN2022/119705 WO2023226255A1 (zh) 2022-05-24 2022-09-19 基于策略模式的物品查询方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210570976.7A CN115033211A (zh) 2022-05-24 2022-05-24 基于策略模式的物品查询方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN115033211A true CN115033211A (zh) 2022-09-09

Family

ID=83120757

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210570976.7A Pending CN115033211A (zh) 2022-05-24 2022-05-24 基于策略模式的物品查询方法、装置、设备及存储介质

Country Status (2)

Country Link
CN (1) CN115033211A (zh)
WO (1) WO2023226255A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115858885A (zh) * 2023-02-28 2023-03-28 美云智数科技有限公司 账套数据查询方法、装置、计算机设备和存储介质
WO2023226255A1 (zh) * 2022-05-24 2023-11-30 青岛海尔科技有限公司 基于策略模式的物品查询方法、装置、设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10262036B2 (en) * 2016-12-29 2019-04-16 Microsoft Technology Licensing, Llc Replacing pronouns with focus-specific objects in search queries
CN113326034A (zh) * 2020-02-28 2021-08-31 浙江大搜车软件技术有限公司 策略实现的调用方法及装置、电子设备、存储介质
CN112541009B (zh) * 2020-12-23 2023-10-13 湖北华中电力科技开发有限责任公司 数据查询方法、装置、电子设备及存储介质
CN114417089A (zh) * 2021-12-30 2022-04-29 深圳价值在线信息科技股份有限公司 查询方法、装置、终端设备及计算机可读存储介质
CN115033211A (zh) * 2022-05-24 2022-09-09 青岛海尔科技有限公司 基于策略模式的物品查询方法、装置、设备及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023226255A1 (zh) * 2022-05-24 2023-11-30 青岛海尔科技有限公司 基于策略模式的物品查询方法、装置、设备及存储介质
CN115858885A (zh) * 2023-02-28 2023-03-28 美云智数科技有限公司 账套数据查询方法、装置、计算机设备和存储介质
CN115858885B (zh) * 2023-02-28 2023-06-30 美云智数科技有限公司 账套数据查询方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
WO2023226255A1 (zh) 2023-11-30

Similar Documents

Publication Publication Date Title
CN115033211A (zh) 基于策略模式的物品查询方法、装置、设备及存储介质
CN113365106B (zh) 一种多媒体资源生成方法、装置、电子设备及存储介质
CN105516270A (zh) 信息推送方法及装置
CN115185717B (zh) 接口调用方法、装置、电子设备和存储介质
CN112784136A (zh) 数据查询方法、装置及电子设备
CN113238763A (zh) 应用部署的方法、设备、存储介质及程序产品
CN109684112B (zh) 程序文件运行方法、装置、终端及存储介质
CN111708824A (zh) 数据处理方法、装置、设备及存储介质
CN106909481B (zh) 接口测试方法、接口测试装置和电子设备
CN114896165A (zh) 会话机器人系统的测试方法、装置、电子设备和存储介质
CN114066370A (zh) 库存服务调用方法、装置、设备、存储介质及程序产品
CN113296969A (zh) 信息处理方法、装置及电子设备
CN111784376A (zh) 用于处理信息的方法和装置
CN111191998A (zh) 事项处理方法及装置
US20170251090A1 (en) Method and device for presenting information
CN111159148B (zh) 一种配置信息状态管理方法、装置、电子设备及存储介质
CN117632995A (zh) 数据处理逻辑的验证方法、装置、电子设备及存储介质
KR102139143B1 (ko) 음성 통신에서 컨텐츠를 공유하는 기능을 가지는 전자 장치 및 그 제어 방법
CN115659071A (zh) 页面跳转方法、装置、电子设备及存储介质
CN115390911A (zh) 节点信息确定方法、装置和设备
CN115421727A (zh) 代码数据测试文件生成方法、装置、设备及存储介质
CN116248781A (zh) 基于交易信息的报文处理方法、装置、设备及存储介质
CN114240393A (zh) 基于管理系统的数据处理方法、装置、设备及存储介质
CN115933942A (zh) 虚拟资源显示方法、装置、电子设备及存储介质
CN114936048A (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