一种创建并调用通用组件的方法及设备的制作方法

文档序号:6426872阅读:80来源:国知局
专利名称:一种创建并调用通用组件的方法及设备的制作方法
技术领域
本申请涉及计算机技术领域,尤其涉及一种创建通用组件并对创建的通用组件进行调用的方法及设备。
背景技术
随着计算机软件技术的不断发展,软件越来越朝着大而复杂的方向发展,为了对这种大而复杂的软件进行有效运用,可以将这些软件划分成一系列可先行实现、易于开发、理解和调整的组件。划分后的每个组件功能确定、单独设计、分别编码,最后将多个组件组装在一起,完成软件的运行。在软件开发过程中,为了提高软件代码的可复用性,提高开发效率,可将常用的界面元素封装成一组相对独立的组件,由这些组件构成图形用户界面(Graphical User Interface,⑶I)库或⑶I平台。⑶I平台中可存在几十种甚至上百种可用的组件,每种组件能够实现界面上的一种可见或不可见的功能。在⑶I平台内的组件可以以树形结构存在,任意一个组件都可以将其他若干个组件作为自身的子组件,构成组件之间的嵌套关系。如图I所示,为CTI平台内组件之间的嵌套关系示意图,从图I中可以看出,组件I内嵌套了组件2和组件3,而组件2内又进一步嵌套了组件4。作为子组件的组件4可以被组件2所调用,同样的,作为子组件的组件2和组件3又可以被组件I所调用。而实际上,作为被嵌套的某些组件的功能具有通用性,即这些组件经常被嵌套至多种组件中,并且嵌套在每种组件中时,这些组件的属性都相同,则这些具有通用功能的组件称之为通用组件(Common Component)。例如,即时通信软件中的边框组件可以被各种窗口类组件所嵌套,用于绘制窗口类组件的边框,背景组件也可以被各种窗口类组件所嵌套,用于绘制窗口类组件的背景,因此,边框组件和背景组件可称之为通用组件。假设窗口类组件有会话窗口组件和系统消息窗口组件,按照目前的组件嵌套模式,如图2所示,会话窗口组件要通过创建边框组件和背景组件来实现对边框组件和背景组件的嵌套,进而获得边框组件和背景组件的功能;系统消息窗口组件同样也要通过创建边框组件和背景组件来实现对边框组件和背景组件的嵌套,进而获得边框组件和背景组件的功能。从图2所示的嵌套结构可以看出,对于通用组件而言,当通用组件被多个其他组件嵌套时,即使这些通用组件被嵌套在其他组件中的属性相同,其他组件也必须分别嵌套通用组件,并只能对自身嵌套的通用组件进行调用,来达到运行通用组件功能的目的。在这种嵌套方式下,系统需要为每个其他组件创建通用组件分配用于创建的系统资源,即使相同的通用组件被多个其他组件创建时,系统也要为每次创建过程分配系统资源,导致内存资源的大量浪费;同时,每个组件在运行通用组件之前,都要创建该通用组件,由于每次的创建过程会占用一定的时长,因此,组件的正常运行速度也受到极大的影响。

发明内容
本申请的目的在于提供一种创建并调用通用组件的方法及设备,用以解决现有技术中存在的由于嵌套创建通用组件,导致内存资源的大量浪费和组件运行速度低的问题。一种创建通用组件的方法,应用于具有封装后的组件的软件系统中,包括在软件初始化时,生成通用组件库;根据配置文件中记录的通用组件的属性信息,创建通用组件;将创建的通用组件以及该通用组件的标识存储至所述通用组件库中。 一种调用通用组件的方法,包括确定待调用的通用组件的标识;根据确定的所述标识,从已存储多个通用组件的通用组件库中查找所述标识所表示的通用组件;调用查找出的通用组件。一种创建通用组件的设备,应用于具有封装后的组件的软件系统中,包括库创建模块,用于在软件初始化时,生成通用组件库;组件创建模块,用于根据配置文件中记录的通用组件的属性信息,创建通用组件;存储模块,用于将创建的通用组件以及该通用组件的标识存储至所述通用组件库中。一种调用通用组件的设备,包括标识确定模块,用于确定待调用的通用组件的标识;查找模块,用于根据确定的所述标识,从已存储多个通用组件的通用组件库中查找所述标识所表示的通用组件;调用模块,用于调用查找出的通用组件。本申请有益效果如下本申请实施例提供的方案,在软件初始化过程中,完成通用组件的统一创建,并统一存储在通用组件库的过程,在其他普通组件需要调用通用组件时,无需分别创建通用组件,而只需要直接调用已创建的通用组件即可。在本申请实施例的方案中,通用组件只需创建一次,这减少了通用组件的创建数量,可有效减少通用组件创建过程中占用的系统资源,且提高其他普通组件的运行速度。


图I为背景技术中组件之间的嵌套关系示意图;图2为背景技术中组件之间的嵌套关系示意图;图3为本申请实施例一中创建通用组件的方法步骤示意图;图4为本申请实施例二中调用通用组件的方法步骤示意图;图5为本申请实施例三中调用通用组件的方法步骤示意图;图6为本申请实施例三中普通组件与通用组件之间的调用关系示意图7为本申请实施例四中创建通用组件的设备结构示意图;图8为本申请实施例五中调用通用组件的设备结构示意图。
具体实施例方式为实现本申请目的,本申请实施例提出一种新的针对通用组件的创建以及调用的方案,在软件的初始化阶段,创建通用组件并将创建成功的通用组件以及其标识存储在通用组件库中,当普通组件需要使用通用组件的功能时,无需再分别嵌套该通用组件,而是直接调用通用组件库中的通用组件即可。通过本申请实施例的方案,软件程序中的各普通组件无需分别创建通用组件,而只要需要调用通用组件库中的通用组件就能够获得通用组件的功能,由于只需要在软件的初始化阶段创建一次通用组件,普通组件就可以在任何时候自由地调用通用组件,减少了通用组件的创建次数,可有效减少通用组件创建时对系统内存资源的占用,同时,对于普通组件而言,不需要各自创建通用组件,而只需要调用通用组件,极大地提高了组件的运行速度,进而提高了软件的运行速度。
下面结合说明书附图对本申请实施例的方案进行详细描述。需要说明的是,为了与创建以及被调用的通用组件相区别,将本申请各实施例中涉及的软件程序中需要调用通用组件的其他组件称之为普通组件。实施例一如图3所示,为本申请实施例一中创建通用组件的方法步骤示意图,所述方法包括以下步骤步骤101 :在软件开始初始化时,生成通用组件库。本申请实施例的方案是,在软件初始化时开始执行创建通用组件的操作,并在初始化结束之前完成通用组件的创建过程。这样做的目的是在软件正常运行之前已执行完毕创建通用组件的操作,可使在软件正常运行时,软件中的普通组件根据需求直接调用已创建完毕的通用组件。若是在软件初始化结束时还没有完成创建通用组件的操作,甚至在软件中的普通组件需要调用通用组件时才创建的话,由于创建通用组件需要占用一定的时长,因此,这种做法会造成普通组件调用通用组件的过程有较大时延。在执行步骤101时,当软件被初始化启动后,就为该软件生成一个通用组件库。以所述软件是即时通信软件为例,本步骤101的具体实现过程为首先,实时检测所述即时通信软件是否被初始化启动,即该即时通信软件是否在所安装的设备中启动。然后,当检测出所述即时通信软件被初始化启动时,对即时通信软件所在的设备的内存资源进行扫描,并分配一定量的内存资源作为通用组件库的内存资源,所述分配的内存资源用于在通用组件库中存储后续所创建的通用组件。在为即时通信软件的通用组件库分配内存资源,为通用组件库的读写操作分配进程,以及记录通用组件库的入口地址和其他用于对通用组件库中的内容进行操作的信息后,所述通用组件库就生成完毕。为了提高通用组件库的访问速度,本实施例中生成的通用组件库中可采用映射(map)或哈希映射(hashmap)的数据结构。步骤102 :根据配置文件中记录的通用组件的属性信息,创建通用组件。
在软件的开发过程中,已经将一些常用的元素封装成相对独立的组件,这些已封装的相对独立的组件中包括通用组件,因此,在软件开发完成时,通用组件的属性信息已记录在配置文件中,该配置文件中记录了能够用于创造通用组件的属性信息,且该配置文件存储在软件的文本存储区域中。所述属性信息包括但不限于以下信息中的一种或多种的组合I、通用组件的类型,表示通用组件是什么功能的组件。例如若通用组件的类型是Background,表示该通用组件是用于生成背景的组件;若通用组件的类型是Border,表示该通用组件是用于生成边框的组件。2、通用组件的名称。仍以一个Background类型的通用组件为例,其名称可以是在软件开发过程中所 定义的名称。3、运行通用组件时所需数据的存储地址,用于表示通用组件在被调用运行时,所需调用的其他数据的存储地址。例如,一个Background类型的通用组件被调用以生成背景时,同时需要调用各背景图片,因此,在Background类型的通用组件的属性信息中需要记录各背景图片的存储地址,以便于在生成背景时可快速调用显示各项背景图片。在步骤102的执行过程中,由于配置文件中记录了多个通用组件的属性信息,每一组属性信息表示一个通用组件的属性,因此,当正确读取出配置文件中记录的每组属性信息后,可以使用该属性信息分别创建多个通用组件,具体的创建过程为第一步按照设定的实例创建方式,创建通用组件的实例。在本实施例的方案中,每个通用组件的实例创建过程相同,具体过程包括根据待创建的通用组件的类型查找出相应的类工厂(class factory),并通过调用所述类工厂的创建实例(CreateInstance)成员函数完成对同类型通用组件的创建,并返回创建后的通用组件的实例。所述类工厂的实质是一个组件对象模型(COM)中的对象,类工厂中定义了一个IClassFactory接口,通过该IClassFactory接口中的CreateInstance成员函数,完成对通用组件的实例化。另外,根据COM规范的定义,组件对象类型(COM Class)和类工厂是配对出现的,也就是说,若要对某种类型通用组件实例化,就要通过该类型的通用组件对应的类工厂来实现。第二步根据配置文件中记录的通用组件的属性信息,为创建的实例设置属性,得到创建完成的通用组件。所述为实例设置属性是指通过调用组件的初始化(Initialize)算法,把一组属性信息传入实例,实现将属性应用于通用组件实例的目的。下面以Background类型的通用组件为例,来说明使用属性信息创建通用组件的过程假设在配置文件中有两个Backgound通用组件,这两个通用组件的属性信息不同,第一个Background通用组件加载一个图片来填充背景,第二个Background通用组件使用白色来填充背景。
配置文件中记录的这两个Backgound通用组件的属性信息可以如下所示
<Components>
〈Component〉
<Class>Background</Class> //笫一个通用组件的类型是
Backgound
<ID>Background_ID_l</ID> //第一个 Backgound 通用组件名称为BackgroundTDl
<Style>Image</Style>//第一个 Backgound 通用组件的填充
方式是图像填充
<Image>back.bmp</Image> //第一个 Backgound 通用组件中图像填
充用于填充背景
<FillType>Tile</FillType> //第一个 Backgound 通用组件的图像填充方式是平铺
〈/Component〉
〈Component〉
<Class>Background</Class> //第二个通用组件的类型是 Backgound<ID>Background_ID_2</ID> //第二个 Backgound 通用组件名称为Background—ID—2
<Style>F illColor</ Style> //笫二个 Backgound 通用组件是 1 色填

<Color>OxFFFFFF</Color> //第二个 Backgound 通用组件的填充的颜色是白色
〈/Component〉
〈/Components〉在创建过程中,当读取配置文件中的上述第一个通用组件的属性信息后,确定该通用组件的类型是Background,则查找出对应的类工厂BackgroundFactory。然后调用BackgroundFactory 的 CreateInstance 成员函数完成第一个Backgound通用组件的创建,假设返回的第一个Backgound通用组件的实例保存在spBackgroundl中。
接着,设置第一个Backgound通用组件的属性,调用通用组件的Initialize算法,将第一个Backgound通用组件的属性信息传入第一个Backgound通用组件的实例中。具体的传入方式是运行Initialize算法,依次读取出第一个Backgound通用组件的每一个属性信息,针对每次读取的属性信息,调用相应的属性设置函数进行传入。例如,读取的属性信息是第一个Backgound通用组件的填充方式(Style),则调用SetStyle函数,将第一个Backgound通用组件的填充方式“图像填充Image”传入实例;再例如,读取的属性信息是第一个Backgound通用组件的图像填充方式(FillType),则调用SetFillType函数,将第一个Backgound通用组件的图像填充方式“平铺Tile”传入实例。在上述针对第一个通用组件创建完成后,继续读取第二个通用组件的属性信息,针对第二个通用组件的创建方式与针对第一个通用组件的创建方式相同,但是,在将第二个Backgound通用组件的属性信息传入第二个Backgound通用组件的实例中时,由于第一·个通用组件和第二个通用组件的属性信息的内容不同,因此,最终创建出的两个Backgound通用组件能够实现不同外观效果的背景。步骤103 :将创建的通用组件以及通用组件的标识存储至所述通用组件库中。从步骤102的实现方式中可以看出,本申请实施例在创建实例时,是以某一类型的通用组件对应的类工厂来创建的,创建的同一类型的通用组件可以有多个实例,因此,为了详细区分各通用组件,当创建了实例后,就可以为每个创建的实例分配标识(ID)。本申请实施例的方案中就是针对通用组件的实例来分配ID的,这样做的目的是通过相同的类工厂创建的同类型通用组件,这些通用组件的类型虽然相同但其属性信息不完全相同,产生的行为结果也不同,因此,如果概括性地针对同类组件分配ID的话,可能会导致后续的调用过程出现错误,但使用本实施例中针对实例分配ID的方式,就可以避免对不同实例的通用组件进行调研,保证通用组件调用的精确度。具体地,本步骤103可以以分布式Key-Value (键-值对)的存储方式进行存储,实现方式如下第一步确定指向创建的实例在通用组件库的存储位置的内容指针。以创建Background类型的通用组件(称之为通用组件_1)为例,当在步骤102中根据通用组件_1的属性信息创建实例(称之为实例_1)后,将该实例_1存储在通用组件库中,并定义指向实例_1存储位置的内容指针(称之为内容指针_1)。第二步为创建的通用组件的实例分配标识。仍以创建Background类型的通用组件_1为例,当在步骤102中根据通用组件_1的属性信息创建实例_1后,为该实例_1分配一个唯一表示该实例_1的ID,例如,分配给该实例 _1 的标识为 “ ID_C0MM0N_BKGND1”。上述第一步和第二步的实现顺序不固定,也可以先执行第二步后执行第一步,也可以第一步和第二步并列执行。第三步建立通用组件的实例的标识与内容指针之间的对应关系。在第一步中为通用组件_1的实例_1分配ID,且在第二步中定义了指向实例_1在通用组件库中的存储位置的内容指针_1后,可以建立ID与内容指针_1之间的对应关系,所述对应关系中的标识所表示的实例与对应的内容指针指向的实例相同。
第四步将实例的标识与内容指针之间的对应关系存储至所述通用组件库中。此时,在通用组件库中不仅存储了通用组件的内容,还同时以key-value分布式存储系统的形式将标识与内容指针之间的对应关系存储在通用组件库中。本申请实施例一的步骤102和步骤103中,依次对将配置文件中记录的各通用组件的属性信息进行读取并操作,分别创建对应的通用组件并存储在通用组件库中,直至将配置文件中记录各属性信息对应的通用组件全部创建并存储。通过本申请实施例一的方案,在软件程序初始化过程中完成通用组件的统一创建以及统一存储的过程,与现有的由普通组件各自创建通用组件的方式相比,可有效减少创建通用组件的次数,进而减少通用组件的创建过程所占用的内存数量,提高普通组件的运行速度;同时,本实施例在软件初始化过程中完成通用组件的创建操作,使得普通组件可根据需求直接调用已创建完毕的通用组件,而无需再等待通用组件的创建过程,并且本实施例中通过创建实例的方式来创建通用组件,并为实例分配唯一的标识,即使通用组件库中 存储了同类型的多个通用组件,也可以根据实例的ID查询出特定属性的通用组件,避免同类型的多个通用组件的混淆,保证了通用组件高精确度的调用。实施例二当采用实施例一的方案创建了通用组件后,就可以进一步对通用组件库中的通用组件进行调用,如图4所示,为本申请实施例二中调用通用组件的方法步骤示意图,所述方法包括以下步骤步骤201 :确定待调用的通用组件的标识。在本实施例的方案中,普通组件内存储了可调用的通用组件的标识,当普通组件需要调用通用组件时,读取自身存储的通用组件的标识来进行调用操作。步骤202 :根据确定的所述标识,从已存储多个通用组件的通用组件库中查找所述标识所表示的通用组件。根据通用组件库中存储的通用组件的形式不同,本步骤的具体实现方式也有所不同。假设实施例一中,通用组件库中存储的是通用组件的实例,以及实例的标识与内容指针之间的对应关系,则在本步骤中,从通用组件库中查找所述标识所表示的通用组件的具体实现过程为第一步根据通用组件的实例的标识与内容指针之间的对应关系,确定待调用的通用组件的实例的标识对应的内容指针。步骤201中确定的待调用的通用组件的标识是能够唯一表示该通用组件的标识,若在实施例一种通用组件库中存储的是通用组件的实例的标识,则在步骤201中确定的通用组件的标识即为该通用组件的实例的标识。在确定待调用的通用组件的标识后,就可从通用组件库中查询与该标识对应的内容指针。第二步将确定的内容指针所指向的实例作为查找出的通用组件的实例。由于通用组件是由实例创建的,因此,在查找出通用组件的实例后,也就是查找出了已创建的通用组件。步骤203 :调用查找出的通用组件。若在步骤202中查找出的是通用组件的实例,则在本步骤中通过调用通用组件的实例入口,并运行所述实例,以达到调用、运行通用组件的目的。通过本申请实施例二的方案,普通组件在需要运行通用组件、获得通用组件的功能时,无需分别创建通用组件,而是直接调用通用组件库中已创建的通用组件,去除了普通组件分别创建通用组件时的时间消耗以及内存资源消耗,提高了组件运行效率;且本申请实施例的方案中,通过通用组件库内针对存储的各实例的固定ID来进行通用组件的访问,无需由系统动态为实例分配ID,在保证通用组件正确调用的基础上,减少资源的占用。实施例三本申请实施例三通过一个具体的实例,来详细说明本申请实施例二的方案。假设要调用通用组件的普通组件为会话窗口组件,会话窗口组件可调用的通用组件为背景通用组件和边框通用组件,背景通用组件的标识为BackgroundID,用于指明会话窗口组件的背景由哪个背景通用组件来绘制;边框通用组件的标识为BorderlD,用于指明会话窗口组件的边框由哪个边框通用组件来绘制。这两个通用组件的标识记载在会话窗 口组件内。如图5所示,为本实施例三种,会话窗口组件调用通用组件库中相应通用组件的步骤示意图,包括以下步骤步骤301 :当会话窗口组件要开始绘制窗口时,确定用于绘制背景的背景通用组件的标识BackgroundID,以及确定用于绘制边框的边框通用组件的标识BorderlD。步骤302 :会话窗口组件分别判断BackgroundID和BorderID是否有效,若是,贝丨J执行步骤303 ;否则,若只有一个标识有效,则有效的标识继续执行步骤303 ;若两个标识都无效,则停止调用通用组件的操作,利用会话窗口组件自身的绘制功能进行绘制。在本实施例的方案中,虽然会话窗口组件中存储了背景通用组件和边框通用组件的标识,但存储的通用组件的标识可能是无效的标识,为了保证会话窗口组件能够正确的调用通用组件,以及避免无效标识的失败调用额外占用系统资源的情况,本步骤中对用于查询通用组件的标识的有效性进行检查,只有有效的通用组件的标识才能进行后续的通用组件查找过程,对于无效的通用组件的标识不允许使用。以判断BackgroundID是否有效为例,其判断方式包括但不限于以下内容第一步预先设定有效的通用组件标识内容的字符串长度的范围值。在本申请各实施例的方案中,通用组件的标识(特殊地,通用组件实例的标识)内容是字符串,对于有效的标识,其内容中字符串的长度应该在一定的范围内,因此,可预先设定有效的标识内容的字符串长度的范围值。内容中的字符串长度在该范围值内的标识为有效标识,否则为无效标识。第二步判断BackgroundID的内容是否为空,若是,则确定所述BackgroundID无效;否则,执行第三步。第三步判断BackgroundID内容的字符串长度是否在设定的范围值内;若是,则确定所述BackgroundID有效;否则,确定所述BackgroundID无效。步骤303 :会话窗口组件通过有效的BackgroundID和BorderID,从通用组件库中查找出对应的内容指针。在本实施例的方案中,会话窗口组件可以以同步方式,通过预设的函数查找多个内容指针并进行实例的调用。
通过有效的BackgroundID查找出指向背景通用组件的实例的内容指针,通过有效的BorderID查找出指向边框通用组件的实例的内容指针。步骤304:会话窗口组件利用查找出的内容指针,从通用组件库中调用指向的背景通用组件的实例和边框通用组件的实例。由于通过BackgroundID对应的内容指针可以确定背景通用组件的实例,因此,会话窗口组件调用并运行背景通用组件的实例,来绘制窗口的背景;同理,通过调用并运行边框通用组件的实例,来绘制窗口的边框。如图6所示,为通过本实施例三的方案,普通组件与通用组件之间的调用关系示意图,其中,左边实线的通用组件是创建并存储在通用组件库中的通用组件;右边虚线的通用组件是被普通组件调用的通用组件。除了会话窗口组件外,其他诸如系统消息窗口组件的普通组件需要调用背景通用组件和边框通用组件时,也可按照上述方式进行。
实施例四本申请实施例四还提供一种与实施例一属于同一发明构思下的创建通用组件的设备,如图7所示,应用于具有封装后的组件的软件系统中,包括库创建模块11、组件创建模块12和存储模块13,其中库创建模块11用于在软件初始化时,生成通用组件库;组件创建模块12用于根据配置文件中记录的通用组件的属性信息,创建通用组件;存储模块13用于将创建的通用组件以及通用组件的标识存储至所述通用组件库中。所述组件创建模块12包括实例创建子模块21和属性设置子模块22,其中实例创建子模块21用于按照设定的实例创建方式,创建通用组件的实例;属性设置子模块22用于根据配置文件中记录的通用组件的属性信息,为创建的实例设置属性。所述存储|吴块13包括对应关系建立子|吴块23和执行子|吴块24,其中对应关系建立子模块23用于确定指向创建的实例在通用组件库中存储位置的内容指针,以及为创建的实例分配标识,并建立实例的标识与内容指针之间的对应关系;执行子模块24用于将实例的标识与内容指针之间的对应关系存储至所述通用组件库中。本实施例四中的创建通用组件的设备可以是能够执行实施例一各步骤的设备,其实现实施例一各步骤的逻辑部件不再一一赘述。本实施例四中的创建通用组件的设备可以是集成在软件中的客户端,也可以是独立于软件但能够调用软件中各项信息的客户端。实施例五本申请实施例五还提供一种与实施例二和实施例三属于同一发明构思下的调用通用组件的设备,如图8所示,包括标识确定模块31、查找模块32和调用模块33,其中标识确定模块31用于确定待调用的通用组件的标识;查找模块32用于根据确定的所述标识,从已存储多个通用组件的通用组件库中查找所述标识所表示的通用组件;调用模块33用于调用查找出的通用组件。还包括判定模块34,用于判断标识确定模块31确定的所述标识的内容是否为空,在所述标识的内容不为空时,且确定所述标识内容的字符串长度在设定范围值内时,触发所述查找模块32。所述查找模块32包括指针确定子模块41和操作子模块42,其中指针确定子模块41用于根据通用组件的实例的标识与内容指针之间的对应关系,确定待调用的通用组件的实例的标识对应的内容指针;操作子模块42用于将确定的内容指针所指向的实例作为查找出的通用组件的实例。所述调用模块33,具体用于调用查找出的通用组件的实例入口,并运行所述实例。本实施例五中的调用通用组件的设备可以是能够执行实施例二和实施例三各步骤的设备,其实现实施例二和实施例三各步骤的逻辑部件不再一一赘述。本实施例五中的调用通用组件的设备可以集成在软件中的各普通组件中,当某一普通组件需要调用通用组件时,可以根据本地集成的调用通用组件的设备的功能完成调用;调用通用组件的设备也可以独立于软件的普通组件,当某一普通组件需要调用通用组 件时,应首先运行调用通用组件的设备,通过该设备完成对通用组件的调用。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
权利要求
1.一种创建通用组件的方法,其特征在于,应用于具有封装后的组件的软件系统中,包括 在软件初始化时,生成通用组件库; 根据配置文件中记录的通用组件的属性信息,创建通用组件; 将创建的通用组件以及该通用组件的标识存储至所述通用组件库中。
2.如权利要求I所述的方法,其特征在于,所述属性信息包括以下信息中的一种或多种组合 通用组件的类型、通用组件的名称和运行通用组件时所需数据的存储地址。
3.如权利要求I所述的方法,其特征在于,根据配置文件中记录的通用组件的属性信息,创建通用组件,具体包括 按照设定的实例创建方式,创建通用组件的实例,并根据配置文件中记录的通用组件的属性信息,为创建的实例设置属性。
4.如权利要求3所述的方法,其特征在于,将创建的通用组件以及通用组件的标识存储至所述通用组件库中,具体包括 确定指向创建的实例在通用组件库中存储位置的内容指针,以及为创建的实例分配标识,并建立实例的标识与内容指针之间的对应关系; 将实例的标识与内容指针之间的对应关系存储至所述通用组件库中。
5.一种调用通用组件的方法,其特征在于,包括 确定待调用的通用组件的标识; 根据确定的所述标识,从已存储多个通用组件的通用组件库中查找所述标识所表示的通用组件; 调用查找出的通用组件。
6.如权利要求5所述的方法,其特征在于,确定待调用的通用组件的标识之后,且从通用组件库中查找所述标识所表示的通用组件之前,所述方法还包括 判断所述标识的内容是否为空; 在所述标识的内容不为空时,进一步确定所述标识内容的字符串长度在设定范围值内。
7.如权利要求5所述的方法,其特征在于,根据确定的所述标识,从通用组件库中查找所述标识所表示的通用组件,具体包括 根据通用组件的实例的标识与内容指针之间的对应关系,确定待调用的通用组件的实例的标识对应的内容指针; 将确定的内容指针所指向的实例作为查找出的通用组件的实例。
8.如权利要求7所述的方法,其特征在于,调用查找出的通用组件,具体包括 调用通用组件的实例入口,并运行所述实例。
9.一种创建通用组件的设备,其特征在于,应用于具有封装后的组件的软件系统中,包括 库创建模块,用于在软件初始化时,生成通用组件库; 组件创建模块,用于根据配置文件中记录的通用组件的属性信息,创建通用组件; 存储模块,用于将创建的通用组件以及该通用组件的标识存储至所述通用组件库中。
10.一种调用通用组件的设备,其特征在于,包括 标识确定模块,用于确定待调用的通用组件的标识; 查找模块,用于根据确定的所述标识,从已存储多个通用组件的通用组件库中查找所述标识所表示的通用组件; 调用模块,用于调用查找出的通用组件。
全文摘要
本申请公开了一种创建并调用通用组件的方法及设备,主要内容包括在软件初始化过程中完成通用组件的统一创建以及统一存储在通用组件库的过程,在其他普通组件需要调用通用组件时,无需分别创建通用组件,而只需要直接调用已创建的通用组件即可,由于在本申请实施例的方案中,通用组件只需创建一次,减少了通用组件的创建数量,因此,可有效减少通用组件创建过程中占用的系统资源,且提高其他普通组件的运行速度。
文档编号G06F9/44GK102841780SQ20111017094
公开日2012年12月26日 申请日期2011年6月23日 优先权日2011年6月23日
发明者唐红兵 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1