[发明专利]一种解除程序模块循环依赖的方法及系统在审
申请号: | 201810930592.5 | 申请日: | 2018-08-15 |
公开(公告)号: | CN109144571A | 公开(公告)日: | 2019-01-04 |
发明(设计)人: | 王唯融 | 申请(专利权)人: | 郑州云海信息技术有限公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30 |
代理公司: | 济南诚智商标专利事务所有限公司 37105 | 代理人: | 黄晓燕 |
地址: | 450018 河南省郑州市*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序模块 指针保存 调用 业务运行 从模块 加载 编程 指针 | ||
本发明实施例公开了一种解除程序模块循环依赖的方法及系统,所述程序模块包括依赖模块和被依赖模块,所述依赖模块包括函数B,所述被依赖模块包括函数D,函数D依赖函数B,在加载依赖模块时,将函数B的指针保存至被依赖模块内。本发明将依赖模块中被依赖函数的指针保存在被依赖模块内,在调用被依赖模块的依赖函数是,直接从模块内获取被依赖函数的指针,解除依赖模块和被依赖模块间的循环调用问题,使模块间编程和业务运行能够顺利进行。
技术领域
本发明涉及计算机软件技术领域,具体地说是一种解除程序模块循环依赖的方法及系统。
背景技术
在模块化编程的实际场景中,时常发生因模块间逻辑耦合较高而发生循环依赖的需要。模块间循环依赖,会引起编译时模块顺序无法确定,最终导致程序无法编译、无法使用。
模块间循环依赖的出现,往往被认为是模块划分粒度不合理,或者模块间管理不正确。但事实上,伴随着程序业务的增加完善,模块间交叉引用的需要每每出现。对于这类无法避免的交叉引用,常见的解决方案是合并模块,或者将所涉模块进行进一步拆分,但这些操作往往伴随着巨大的工作量和隐含的风险。
发明内容
本发明实施例中提供了一种解除程序模块循环依赖的方法及系统,以解决现有技术中解除模块间循环依赖工作量大、风险高的问题。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
本发明第一方面提供了一种解除程序模块循环依赖的方法,所述程序模块包括依赖模块和被依赖模块,所述依赖模块包括函数B,所述被依赖模块包括函数D,函数D依赖函数B,在加载依赖模块时,将函数B的指针保存至被依赖模块内。
结合第一方面,在第一方面第一种可能的实现方式中,所述将函数B的指针保存至被依赖模块内的具体过程为:
注册依赖模块中被依赖函数B的函数指针B’;
加载依赖模块,将函数指针B’保存在被依赖模块的函数指针管理机制中。
结合第一方面,在第一方面第二种可能的实现方式中,所述函数指针B’以变量的形式保存在所述函数指针管理机制中。
结合第一方面,在第一方面第一种或第二种可能的实现方式中,所述方法还包括
调用函数D时,从被依赖模块的函数指针管理机制内获取函数指针B’,执行函数指针B’。
结合第一方面,在第一方面第一种或第二种可能的实现方式中,所述方法还包括
调用函数B时,从被依赖模块的函数指针管理机制内获取函数指针B’,执行函数指针B’。
本发明第二方面提供了一种解除程序模块循环依赖的系统,所述程序模块包括依赖模块和被依赖模块,所述依赖模块包括函数B,所述被依赖模块包括函数D,函数D依赖函数B,所述系统包括函数指针处理单元,所述函数指针处理单元在依赖模块加载时,将函数B的指针保存至被依赖模块内。
结合第二方面,在第二方面第一种可能的实现方式中,所述函数指针处理单元包括
指针注册单元,用于注册依赖模块中被依赖函数B的函数指针B’;
指针转存单元,在加载依赖模块,将函数指针B’保存在被依赖模块的函数指针管理机制中。
结合第二方面,在第二方面第一种可能的实现方式中,所述函数指针处理单元还包括
指针执行单元,在调用函数B或函数D时,从被依赖模块的函数指针管理机制内获取函数指针B’,并执行函数指针B’。
本发明第二方面的所述解除程序模块循环依赖的系统能够实现第一方面及第一方面的各实现方式中的方法,并取得相同的效果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑州云海信息技术有限公司,未经郑州云海信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810930592.5/2.html,转载请声明来源钻瓜专利网。