一种事件系统的创建方法及装置制造方法及图纸

技术编号:14688535 阅读:94 留言:0更新日期:2017-02-23 10:53
本发明专利技术实施例公开了一种事件系统的创建方法及装置,用于解决现有非静态成员函数与基类耦合时给代码设计带来限制的问题。本发明专利技术实施例方法包括:获取待处理函数,其中,所述待处理函数包括静态成员函数;将所述待处理函数生成目标函数对象;获取所述目标函数对象对应的事件名称;根据所述目标函数对象和所述目标函数对象对应的所述事件名称创建事件系统。

【技术实现步骤摘要】

本专利技术涉及计算机领域,具体涉及一种事件系统的创建方法及装置
技术介绍
在C++程序设计中,其总体设计原则是模块化,将C++程序划分为若干个模块,每个模块完成特定的功能,其中,事件机制可以有效解决模块间的解耦问题,“继承”、“关联(Association)”、“事件”对应的耦合度依次降低。事件系统就是创建一个事件映射表,该事件映射表包括一个事件名对应一个或者多个处理函数的映射关系,其中,若处理函数是全局函数或者静态成员函数,则用指针存储全局函数或者静态成员函数,若处理函数是非静态成员函数,通常需要给非静态成员函数安插一个基类,例如:基类为EventCallback,在基类中声明非静态成员函数的指针类型。但是,当给非静态成员函数安插一个基类时,则非静态成员函数必须继承自基类,与基类耦合,从而造成一个不友好的桎梏,若仅为响应事件将非静态成员函数与基类强耦合在一起,违背了设计原则,且给代码设计带来限制。
技术实现思路
本专利技术实施例提供了一种事件系统的创建方法及装置,用于解决现有非静态成员函数与基类耦合时给代码设计带来限制的问题,不需要将非静态成员函数强制继承自基类,不影响代码的设计。本专利技术第一方面提供一种事件系统的创建方法,包括:获取待处理函数,其中,所述待处理函数包括静态成员函数;将所述待处理函数生成目标函数对象;获取所述目标函数对象对应的事件名称;根据所述目标函数对象和所述目标函数对象对应的所述事件名称创建事件系统。本专利技术第二方面提供一种事件系统的创建装置,包括:获取模块,用于获取待处理函数,其中,所述待处理函数包括非静态成员函数;生成模块,用于将所述获取模块获取的所述待处理函数生成目标函数对象;所述获取模块,还用于获取所述生成模块生成的所述目标函数对象对应的事件名称;创建模块,用于根据所述生成模块生成的所述目标函数对象和所述获取模块获取的所述目标函数对象对应的所述事件名称创建事件系统。从以上技术方案可以看出,本专利技术实施例具有以下优点:首先获取待处理函数,其中,该待处理函数包括非静态成员函数,此时,无需给非静态成员函数安插一个基类,而是将待处理函数生成目标函数对象,通过目标函数对象和目标函数对象对应的事件名称创建事件系统,减少模块之间的耦合,不影响代码的设计。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例中事件系统的创建装置的一个结构示意图;图2为本专利技术实施例中事件系统的创建方法的一个实施例示意图;图3为本专利技术实施例中事件系统的创建方法的另一个实施例示意图;图4为本专利技术实施例中事件系统的创建方法的另一个实施例示意图;图5为本专利技术实施例中事件系统的创建方法的另一个实施例示意图;图6为本专利技术实施例中事件系统的创建方法的代码片段示意图;图7为本专利技术实施例中事件系统的创建装置的另一个结构示意图;图8为本专利技术实施例中事件系统的创建装置的另一个结构示意图;图9为本专利技术实施例中事件系统的创建装置的另一个结构示意图;图10为本专利技术实施例中事件系统的创建装置的另一个结构示意图。具体实施方式本专利技术实施例提供了一种事件系统的生成方法及装置,用于解决现有非静态成员函数与基类耦合时给代码设计带来限制的问题,不需要将非静态成员函数强制继承自基类,不影响代码的设计。下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。在介绍本专利技术实施例之前,先介绍一下本专利技术实施例中的事件系统,该事件系统包括目标函数对象和目标函数对象对应的事件名称的映射列表,其中,该目标函数对象为对处理函数(非静态成员函数,静态成员函数,全局函数等)包装成的function函数对象,其实,由于将处理函数包装在function函数的内部,则不需要知道处理函数属于哪个类,也就是不需要依赖这个类,相互之间独立,消除了处理函数与基类的耦合,使之不影响对既有C++程序代码的设计。该事件系统的使用非常简单,可以很方便地应用到既有的C++程序设计中,不需要对现有类的继承树进行修改,只要将成员函数或者全局函数定义为voideventHandler(anyparam)形式,成员函数可以是非静态成员函数或者静态成员函数,若是非静态成员函数,由于非静态成员函数有一个指向当前对象的指针this,则事件系统还可以维护该非静态成员函数的指针this的对象生命期。本专利技术的技术方案可用于任何C++程序设计中,其中,该C++程序设计出的应用可以是任何用于安装在终端上的应用,例如:学习应用,游戏应用,生活应用等,此处不做具体限定,本专利技术的技术方案所创建的事件系统能够减少模块之间的耦合,减少代码的复杂度。触发事件的模块只需要触发出相应的待处理事件,触发事件的模块不必清楚处理事件的模块,处理事件的模块只需要根据自己的需求处理自己感兴趣的待处理事件,如果待处理事件中带有参数,事件系统的创建装置检测该参数是否符合预设的目标参数类型,若是,则调用处理函数处理该待处理事件,若否,则不能抛出异常事故信息,让该待处理事件继续往下传递,然后交给后续的处理函数进行处理。可见,如果没有事件系统,则需要将待处理事件的代码都塞到事件触发的模块,使得代码局部规模变得庞大而不便于维护。本专利技术的技术方案中,使用标准库中的function函数将成员函数和全局函数包装成一个function函数对象,则不需要通过安插一个基类从而硬性继承耦合。对于非静态成员函数,事件系统可维护非静态成员函数的this对象的生命期,简化了内存管理,非静态成员函数的调用开销与虚函数一致,以any作为事件处理函数的参数,可以包容任何类型的待处理事件,且类型安全。请参阅图1,对本专利技术涉及的事件系统的创建装置100的具体结构进行介绍,该事件系统的创建装置可看作是应用通信系统中的服务器,所述应用通信系统还包括终端等,此处不做具体限定该事件系统的创建装置100包括:收发器110、存储器120、处理器130等部件。本领域技术人员可以理解,图1中示出的该事件系统的创建装置100的结构并不构成对第一服务器的限定,可以包括比图1更多或更少的部件,或者组合某些部件,或者不同的部件布置。收发器110可用于收发信息,例如:信号的接收和发送。收发器110通过无线通本文档来自技高网...
一种事件系统的创建方法及装置

【技术保护点】
一种事件系统的创建方法,其特征在于,包括:获取待处理函数,其中,所述待处理函数包括非静态成员函数;将所述待处理函数生成目标函数对象;获取所述目标函数对象对应的事件名称;根据所述目标函数对象和所述目标函数对象对应的所述事件名称创建事件系统。

【技术特征摘要】
1.一种事件系统的创建方法,其特征在于,包括:获取待处理函数,其中,所述待处理函数包括非静态成员函数;将所述待处理函数生成目标函数对象;获取所述目标函数对象对应的事件名称;根据所述目标函数对象和所述目标函数对象对应的所述事件名称创建事件系统。2.根据权利要求1所述的创建方法,其特征在于,所述根据所述目标函数对象和所述目标函数对象对应的所述事件名称创建事件系统包括:根据所述目标函数对象和所述目标函数对象对应的所述事件名称形成映射列表,并根据所述映射列表创建所述事件系统。3.根据权利要求1所述的创建方法,其特征在于,所述根据所述目标函数对象和所述目标函数对象对应的所述事件名称创建事件系统之后,所述方法还包括:将所述事件系统通过图map表或者哈希hash表存储。4.根据权利要求3所述的创建方法,其特征在于,所述根据所述目标函数对象和所述目标函数对象对应的所述事件名称创建事件系统之前,所述方法还包括:确定所述目标函数对象的目标参数类型;所述将所述事件系统通过图map表或者哈希hash表存储之后,所述方法还包括:获取待处理事件;若所述待处理事件所包括的参数类型符合所述目标参数类型,则调用所述目标函数对象处理所述待处理事件。5.根据权利要求4所述的创建方法,其特征在于,所述确定所述目标函数对象的目标参数类型包括:从源代码boost库中的参数类型中确定所述目标函数对象的目标参数类型;或者,从智能指针创建出的参数类型中确定所述目标函数对象的目标参数类型;或者,从C++内置的参数类型中确定所述目标函数对象的目标参数类型。6.根据权利要求4或5所述的创建方法,其特征在于,所述根据所述目标函数对象和所述目标函数对象对应的所述事件名称创建事件系统之后,所述方法还包括:获取所述目标参数类型的变量;通过所述目标参数类型的变量维护所述目标函数对象的生命期。7.根据权利要求6所述的创建方法,其特征在于,所述通过所述目标参数类型的变量维护所述目标函数对象的生命期包括:若处理所述待处理事件,则将所述目标参数类型的变量所对应的引用计数从第一值增加至第二值;若结束处理所述待处理事件,则将所述目标参数类型的变量所对应的引用计数从所述第二值降低至所述第一值。8.一种事件系统的创建装置,其特征在于,包括:获取模块,用于获取待处理函数,其中,...

【专利技术属性】
技术研发人员:陈勇
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1