[发明专利]程序开发方法和装置在审
申请号: | 202010603603.6 | 申请日: | 2020-06-29 |
公开(公告)号: | CN113778388A | 公开(公告)日: | 2021-12-10 |
发明(设计)人: | 宋振亮 | 申请(专利权)人: | 北京京东拓先科技有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 张效荣;王志远 |
地址: | 100176 北京市大兴区北京经济*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 开发 方法 装置 | ||
本发明公开了一种程序开发方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:在应用程序源代码中,利用自定义注解标注实现同一功能接口的多个策略类;每一自定义注解包括注解名称和枚举值;在应用程序启动时,实例化多个策略类;通过注解名称获取每一策略类实例,并将每一策略类实例与标注该策略类的自定义注解中的枚举值之间的映射关系加载到内存;在接收到客户端请求时,利用请求携带的参数确定枚举值,依据内存中的映射关系获取该枚举值对应的策略类实例,执行该策略类实例中的方法。该实施方式能够在系统功能扩展时避免对原有模块代码造成污染。
技术领域
本发明涉及计算机技术领域,尤其涉及一种程序开发方法和装置。
背景技术
在计算机程序开发过程中,经常遇到对系统原有模块进行变更、扩展,或者在原有模块上挂载新模块的场景,常规的解决办法是直接在原有模块上增加if(如果)判断,堆积新的业务代码,或者利用工厂、代理、模板等设计模式或开源框架来编码。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:直接在原有模块上增加if判断的方法违背了程序开发中的开闭原则,即对调用开放、对修改关闭,会增加代码后续的读取和维护成本,同时也会对原有业务代码造成污染,极容易在原有业务上引入新的bug(漏洞),导致测试人员必须对原有业务回归测试,从而影响整个业务的排期,造成人力和财力成本的浪费。基于工厂等设计模式的方法只是将硬编码问题提出来放到工厂类中,并没有解决根本问题,当现有业务扩展或变更时,需要在工厂类中增加状态字段和if判断的代码块,代码依然无法达到“高内聚、低耦合”的目标。
发明内容
有鉴于此,本发明实施例提供一种程序开发方法和装置,能够在系统功能扩展时避免对原有模块代码造成污染。
为实现上述目的,根据本发明的一个方面,提供了一种程序开发方法。
本发明实施例的程序开发方法包括:在应用程序源代码中,利用自定义注解标注预先创建、并且实现同一功能接口的多个策略类;其中,每一自定义注解包括注解名称和作为注解类型元素数据的预设枚举值,标注在任意两个策略类的自定义注解具有同一注解名称和不同的枚举值;在所述应用程序启动时,实例化所述多个策略类;通过所述注解名称获取每一策略类实例,并将每一策略类实例与标注该策略类的自定义注解中的枚举值之间的映射关系加载到内存;在接收到调用所述功能接口的客户端请求时,利用客户端请求携带的参数确定客户端请求对应的枚举值,依据内存中的所述映射关系获取该枚举值对应的策略类实例,执行该策略类实例中的预设方法。
可选地,所述程序开发方法进一步包括:在利用所述自定义注解标注所述策略类之前,创建枚举类,并在该枚举类中定义每一自定义注解中的枚举值。
可选地,所述将每一策略类实例与标注该策略类的自定义注解中的枚举值之间的映射关系加载到内存,包括:将所述映射关系存储到预先创建的map集合。
可选地,每一策略类用于实现所述功能接口下的一种业务类型;以及,所述程序开发方法进一步包括:当需要扩展所述功能接口下的一种新业务类型时:在应用程序源代码中创建新业务类型对应的、并且实现所述功能接口的新策略类,在所述枚举类中增加新枚举值;利用含有新枚举值的自定义注解标注新策略类;其中,该自定义注解与实现所述功能接口的其它策略类的自定义注解具有相同的注解名称;在所述应用程序启动时,实例化实现所述功能接口的每一策略类;通过所述注解名称获取每一策略类实例,并将每一策略类实例与标注该策略类的自定义注解中的枚举值之间的映射关系存储到预先创建的map集合。
可选地,所述多个策略类实现所述功能接口,包括:所述多个策略类直接实现所述功能接口;或者,所述多个策略类通过预先创建的抽象类实现所述功能接口;其中,所述抽象类直接实现所述功能接口,所述多个策略类继承所述抽象类。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东拓先科技有限公司,未经北京京东拓先科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010603603.6/2.html,转载请声明来源钻瓜专利网。