[发明专利]一种数据处理方法、装置及电子设备有效
申请号: | 201710129745.1 | 申请日: | 2017-03-06 |
公开(公告)号: | CN106940714B | 公开(公告)日: | 2019-07-30 |
发明(设计)人: | 钱文品;陈超 | 申请(专利权)人: | 掌阅科技股份有限公司 |
主分类号: | G06F16/25 | 分类号: | G06F16/25;G06F9/448 |
代理公司: | 北京市广友专利事务所有限责任公司 11237 | 代理人: | 祁献民 |
地址: | 100022 北京市朝阳区东三环中路3*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据处理 方法 装置 电子设备 | ||
本发明实施例公开了一种数据处理方法、装置及电子装置,涉及数据处理技术领域。本发明实施例的数据处理方法包括:构建具有类型参数属性的延迟代理类,使用所述延迟代理类生成延迟代理对象,基于所述延迟代理对象,以延迟加载的方式生成具有循环依赖关系的目标对象。此外,本发明实施例还公开了一种数据处理装置及电子设备。通过本发明实施例的方案,能有效的解决循环依赖导致的异常问题。
技术领域
本发明涉及数据处理技术领域,尤其涉及针对具有循环依赖关系的数据的处理技术。
背景技术
循环依赖,就是两个或多个类的对象相互在各自的域中持有对方的引用,比如CircleA引用CircleB,CircleB引用CircleC,CircleC引用CircleA,则它们最终反映为一个环。循环依赖由于存在循环调用问题,在进行代码编译的过程中,往往就不会通过。
针对循环依赖问题,现有技术中存在一些解决方案,比如注入中介法,即相互依赖的类对象不直接持有对方的引用,而是通过持有中间对象(即中介)来间接获取对方的引用。然而,中介注入法会产生对象和中介对象之间的依赖关系,加剧了软件模块之间的耦合性。除此之外,现有技术中还存在用延迟注入法解决循环依赖问题的方案,即相互依赖的类对象在构造时不持有对方的引用,而是在构造完成后再相互注入到对方的域中去。由于延迟注入法将对象的构造逻辑和构造本身进行了分离,在构造完成到注入完成之前,对象将处于残缺状态,这种不完整的状态随着系统模块的复杂性的增加会显著扩大其持续时间,增加了系统的不稳定性。同时因为构造逻辑被分离到构造本身之外,而在一定程度上降低了系统的可理解性。
因此,需要一种更加有效的循环依赖数据处理方法。
发明内容
有鉴于此,本发明实施例提供了一种数据处理方法、装置及电子设备,至少部分的解决现有技术中存在的问题。
第一方面,本发明实施例提供了一种数据处理方法,包括:
构建具有类型参数属性的延迟代理类;
使用所述延迟代理类生成延迟代理对象;
基于所述延迟代理对象,以延迟加载的方式生成具有循环依赖关系的目标对象。
根据本发明实施例的一种具体实现方式,所述方法还包括:
构建用于生成对象的过程类接口。
根据本发明实施例的一种具体实现方式,所述使用所述延迟代理类生成延迟代理对象,包括:
在所述延迟代理类中生成所述过程类接口的对象;
基于所述过程类接口的对象,生成所述延迟代理对象。
根据本发明实施例的一种具体实现方式,在所述基于所述过程类接口的对象,生成所述延迟代理对象之后,所述方法还包括:
在所述延迟代理类的对象为空的情况下,保存所述延迟代理类第一次生成的延迟代理对象;
当所述延迟代理对象被再次调用时,直接使用保存的延迟代理对象。
根据本发明实施例的一种具体实现方式,所述基于所述延迟代理对象,以延迟加载的方式生成具有循环依赖关系的目标对象,包括:
以匿名函数的方式生成具有循环依赖关系的目标对象。
根据本发明实施例的一种具体实现方式,所述基于所述延迟代理对象,以延迟加载的方式生成具有循环依赖关系的目标对象,包括:
当所述延迟代理类被加载时,所述延迟代理类定义的延迟代理对象不被初始化。
根据本发明实施例的一种具体实现方式,所述基于所述延迟代理对象,以延迟加载的方式生成具有循环依赖关系的目标对象,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于掌阅科技股份有限公司,未经掌阅科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710129745.1/2.html,转载请声明来源钻瓜专利网。