[发明专利]一种软件模块间的通信方法和系统有效
申请号: | 201710245809.4 | 申请日: | 2017-04-14 |
公开(公告)号: | CN107220129B | 公开(公告)日: | 2021-01-01 |
发明(设计)人: | 张磊;陈少杰;张文明 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 汤财宝 |
地址: | 430000 湖北省武汉市武汉东湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 软件 模块 通信 方法 系统 | ||
本发明提供本申请提出一种软件模块间的通信方法及系统,所述方法包括:步骤1,获取第一模块的事件发送请求中所包含的标识hash值;步骤2,利用定义为全局单例模式类的事件发送函数,获取所述第一模块外其他模块的接口函数,获取包含所述标识hash值的接口函数;步骤3,利用定义为全局单例模式类的事件发送函数,将所述第一模块的事件发送请求中所包含的事件发送给包含所述标识hash值的接口函数所在的模块。本发明具有如下有益效果:1、有效的实现了软件操作系统中不能进行直接通信的各模块的直接交互;2、降低了操作系统中各软件模块直接通信所造成的耦合。
技术领域
本发明涉及软件事件管理技术领域,更具体地,涉及一种软件模块间的通信方法及方法。
背景技术
软件工程中所指的耦合是指两个或两个以上的软件模块或线程的输入与输出之间存在紧密配合与相互影响,并通过相互作用从一侧向另一侧传输能量的现象。
现有技术在软件开发中,各操作系统都存在没有有提供成熟的技术供其中各个功能模块间进行直接通信的问题;例如:在Android的开发过程中通常会使用多个Fragment来对界面元素来进行展示,但Fragment件不能实现直接通信。原生系统通常是通过两个需要发生通信模块外的其他模块的中转才能实现通信,造成操作耗时且高内聚的技术问题。
现有技术为了解决各操作系统中各功能模块间不能直接通信的问题都采用了调用原系统中现有函数来实现。但是现有解决上述问题的技术方案容易造成各模块间的高耦合的问题。
所以,现有技术中亟需实现软件中各独立功能模块间低耦合高内聚的通信方法。
发明内容
本发明为克服上述问题或者至少部分地解决上述问题,提供一种软件模块间的通信方法及系统。
根据本发明的一个方面,提供一种软件模块间的通信方法,包括:
步骤1,获取第一模块的事件发送请求中所包含的标识hash值;
步骤2,利用定义为全局单例模式类的事件发送函数,获取所述第一模块外其他模块的接口函数,获取包含所述标识hash值的接口函数;
步骤3,利用定义为全局单例模式类的事件发送函数,将所述第一模块的事件发送请求中所包含的事件发送给包含所述标识hash值的接口函数所在的模块。
进一步,所述步骤1还包括:利用定义为全局单例模式类的事件发送函数,确认第一模块的事件发送请求所包含的事件是否存在于系统订阅事件集合中。
进一步,所述步骤1前还包括:在软件中各模块接口函数的参数中添加与所述软件中各模块订阅的各事件相对应的标识hash值。
进一步,所述各模块接口函数通过标识前缀开头且所述函数的参数包含至少一个事件。
进一步,所述全局单例模式类的事件发送函数以静态格式存储在内存中。
进一步,所述步骤2中调用所述第一模块外其他模块的接口函数中包含所述hash值的事件并发送的步骤进一步包括:在Java中利用invoke方法,将所述第一模块外其他模块的接口函数中包含所述hash值的事件,发送给各包含所述hash值的事件所对应的模块。
进一步,所述步骤1前还包括:
步骤0,基于系统中各订阅事件的唯一标识,将当前软件中各模块中的订阅事件关联保存在订阅事件集合中。
进一步,所述步骤0还包括:将所述订阅事件集合静态存储在内存中。
进一步,所述步骤0还包括:将所述订阅事件集合为map集合。
在本发明另一个具体实施例中,一种软件模块间的通信系统,包括请求获取模块、函数获取模块和事件发送模块:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710245809.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种停车库汽车防水淹装置
- 下一篇:一种抗压型连梁式阻尼器