基于对象存储库的对象引用方法

文档序号:6554224阅读:199来源:国知局
专利名称:基于对象存储库的对象引用方法
技术领域
本发明涉及一种对象存储库中对象的处理方法,特别是一种基于对象存储库的对象引用方法。
背景技术
对象存储库(DOORS)是一种集成多应用数据系统,包括用来产生、储存及获取数据文件的工具和程序,数据文件称为对象。办公软件通常包括多种应用,如电子表格、文字处理、演示文稿、电子邮件等,这些应用常规上都有各自的底层结构和文档格式,比较独立。对象存储库是通过二维表式结构作为每一个应用的结构,统一了各种应用的结构,在统一的基础上,做到了各应用间数据交换的无缝,所有应用采用相同的文档格式。所有应用的数据都放入对象存储库中,通过对象存储库处理程序(DOORS Services)进行访问,用户还可基于对象存储库进行二次开发等,如图10所示。
对象存储库的对象之间通过对象地址进行引用,对象和对象之间通过引用又可以组成另一个对象。现有技术使用的对象是对象存储库中存放的基于Office应用定义好的标准对象,如文档(Document)、段落(Paragraph)、幻灯片(Slide)、文字(Text)等。定义标准对象的好处是一旦一个表达某种数据的对象定义后,它就成为表达这个数据的唯一形式,这种将对象标准化的行为可保证整个Office数据表达的简洁,而且多数对象定义可重复使用,降低了数据的冗余,大大提高office的运行性能。例如,任何表示文字的地方都使用Paragraph对象,如文字处理中的文字、电子表格单元格中的文字、幻灯片中的文字,这样Paragraph对象就成为表示段落文字的标准对象。这样的对象不仅Office本身可以直接使用,如果用户基于对象存储库进行开发,也可以直接使用这些已经定义的对象。对象在对象存储库中的位置不是一成不变的,随着内容的改变或增多,对象会根据需要调整其在对象存储库中的地址。
在现有技术中,对象放置在对象存储库中后由对象存储库处理程序记录其存储地址。对象之间的引用是通过引用对象记录被引用对象的地址,进行直接引用。当被引用对象的地址改变时,需要通知对象存储库处理程序调整地址,对象存储库处理程序搜索对象存储库中所有对象,找出引用了该对象的所有对象,然后逐一通知这些对象改变地址引用。在实际应用中,现有技术对象存储库的对象存储、引用和地址调整方法存在下述不足(1)对象之间的引用如果过多的话,呈复杂的网状结构,要想理清引用与被引用的对象需要遍历所有对象,不仅算法复杂而且耗时。
(2)对象存储库中的对象发生地址变动会频繁出现,如果要求对象存储库处理程序每次都进行全部搜索并逐一去调整会加重系统负荷,降低程序运行的速度,效率较低。
(3)为了尽量避免这样的操作,对象存储库处理程序采用了一种临时记录的方法,在给新对象分配空间时尽可能不去影响已有对象的位置。这样虽然能避免一些频繁调整对象地址的行为,但是这样会使对象存储库中的空间出现很多“碎片”,增加程序使用内存,同样会降低程序运行效率。这个原理和硬盘的空间使用类似,当硬盘上的文件存储使用久后,就会出现许多碎片,影响文件读写的速度。

发明内容
本发明的目的是针对现有技术对象引用方面的不足,提供一种基于对象存储库的对象引用方法,将对象之间的直接引用转变为通过代理进行的间接引用,变对象之间复杂的网状引用关系为一对一的引用关系,使对象之间的引用更加清晰,便于理清。
本发明进一步的目的是针对现有技术对象存储库对象地址调整机制中存在的技术缺陷,提供一种全新机制的对象地址调整方法,有效减小了对象存储库因地址调整产生的额外处理过程,大大提高程序运行的速度,提高了对象存储库处理程序的性能,并优化了对象存储库的使用空间。
为了实现本发明目的,本发明提供了一种基于对象存储库的对象引用方法,包括步骤步骤210、引用对象根据被引用对象,获得所述被引用对象的代理地址;步骤220、根据所述代理地址,访问被引用对象的代理;步骤230、读取所述代理记录的对象地址;步骤240、引用对象根据所述对象地址引用所述被引用对象。
其中,所述步骤210前还包括步骤引用对象判断被引用对象的代理地址是否存在,存在则执行步骤210,不存在则执行下述步骤步骤110、引用对象向处理程序询问被引用对象的代理地址;步骤120、处理程序通过搜索代理存储区获得所述代理的代理地址;步骤130、处理程序将所述代理地址发给引用对象,引用对象记录所述代理地址,执行步骤210。
其中,所述步骤120具体为步骤121、处理程序在对象存储库的代理存储区搜索被引用对象的代理,搜索到时执行步骤122,没有搜索到时执行步骤123;步骤122、处理程序获得所述代理的代理地址,执行步骤130;步骤123、处理程序在对象存储库的对象存储区搜索被引用对象,获得被引用对象的对象地址;步骤124、处理程序在对象存储库的代理存储区生成一代理;步骤125、处理程序将所述对象地址写入所述代理;步骤126、所述代理向处理程序注册其代理地址,处理程序获得所述代理的代理地址,执行步骤130。
其中,所述步骤123具体为步骤1231、处理程序在对象存储库的对象存储区搜索被引用对象,搜索到时执行步骤1232,没有搜索到时执行步骤1233;
步骤1232、获得被引用对象的对象地址,执行步骤124;步骤1233、处理程序将被引用对象存储到对象存储库的对象存储区;步骤1234、处理程序记录被引用对象的对象地址,执行步骤124。
在上述技术方案中,还包括调整对象地址的步骤,当对象地址改变时,处理程序执行如下步骤步骤310、处理程序记录所述对象新地址;步骤320、处理程序在对象存储库的代理存储区搜索所述对象的代理,搜索到时执行步骤330,没有搜索到时执行步骤350;步骤330、处理程序访问所述对象的代理;步骤340、处理程序将所述对象新地址写入所述代理;步骤350、地址调整结束。
在上述技术方案中,还包括引用对象的存储步骤,处理程序存储引用对象时执行如下步骤步骤410、处理程序将所述引用对象存储在对象存储库的对象存储区;步骤420、所述引用对象向处理程序注册其引用关系,向处理程序询问被引用对象的代理地址;步骤430、处理程序在对象存储库的代理存储区搜索被引用对象的代理,搜索到时执行步骤440,没有搜索到时执行步骤450;步骤440、处理程序获得所述代理的代理地址,处理程序将所述代理地址发给引用对象,引用对象记录所述代理地址,存储结束;步骤450、处理程序在对象存储库的对象存储区搜索被引用对象,获得被引用对象的对象地址;步骤460、处理程序在对象存储库的代理存储区生成一代理;步骤470、处理程序将所述对象地址写入所述代理;步骤480、所述代理向处理程序注册其代理地址,处理程序获得所述代理的代理地址;步骤490、处理程序将所述代理地址发给引用对象,引用对象记录所述代理地址,存储结束。
本发明基于对象存储库的对象引用方法建立了一种新型的对象引用机制,即所有对象之间的引用都通过代理,将现有技术的对象之间记录对象地址的直接引用改变为本发明的通过记录代理地址的间接引用,变对象之间复杂的网状引用关系为一对一的引用关系,使对象之间的引用更加清晰,便于理清,简化了处理程序管理对象的算法和时间。
本发明的技术方案全面考虑到了引用对象对被引用对象引用过程中可能存在的各种情况,包括(1)当引用对象已经记录了被引用对象的代理地址时,可以直接执行引用流程;(2)当引用对象没有记录被引用对象的代理地址,即引用对象第一次引用被引用对象时,引用对象通过处理程序获得被引用对象的代理地址,之后执行引用流程;(3)在(2)情况中,如果被引用对象已经有代理地址时,处理程序通过搜索代理存储区即可获得被引用对象的代理地址;如果被引用对象没有代理地址,即被引用对象是第一次被其他对象引用时,处理程序则在代理存储区生成一个代理,并获得其代理地址;(4)在(3)情况中,如果被引用对象已经存储在对象存储库中时,处理程序直接获得对象地址;如果被引用对象没有存储在对象存储库中时,处理程序将被引用对象存储在对象存储库的存储区中,并同时在代理存储区生成一个代理,并获得其代理地址;在本发明优选技术方案中,本发明还建立了一种新型的对象地址调整机制,当对象地址发生变化时,处理程序不再需要像现有技术那样去扫描对象存储库中的所有对象,只需要扫描范围很小的代理存储区,同时也不需要像现有技术那样逐一通知引用对象来调整引用地址,所以本发明能减小因地址调整带来的额外处理过程,大大提高程序运行的速度,提高对象存储库处理程序的性能。
在本发明优选技术方案中,本发明还建立了一种新型的对象存储方法,在对象存储的同时即建立对象代理,对象存储库在存储新对象时不必刻意考虑可能对已有对象的影响,可以将对象存储在任何位置,因此对象存储库中的空间可以充分利用,不会出现“碎片”,因此提高了对象存储库的程序运行效率。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。


图1为本发明基于对象存储库的对象引用方法流程图;图2为本发明对象存储库的对象引用结构示意图;图3为本发明实施例一的流程图;图4为本发明实施例二的流程图;图5为本发明实施例三的流程图;图6为本发明对象地址调整流程图;图7为本发明对象存储库的对象地址调整示意图;图8为本发明引用对象存储流程图;图9为本发明对象存储库的结构示意图;图10为对象存储库的应用示意图;图11为对象存储库对象引用示意图。
具体实施例方式
为清晰地说明本发明的技术方案,简要说明一下本发明中涉及的一些专用术语。
(1)对象存储库对象存储库(DOORS)是一种集成多应用数据系统,包括用来产生、储存及获取数据文件的工具以及程序架构。对象存储库提供了二维表式的对象存取方式,该二维表通过表号、行号、列号唯一指定一个单元格(Cell),每个单元格中可放置一个且仅放置一个对象,单元格和单元格之间的对象可以组合成另一个对象,所有的单元构成对象存储库;(2)对象存储库处理程序上层应用与对象存储库进行交互所采用的处理程序,用户通过所述对象存储库处理程序(以下简称处理程序)就可以进行对象的访问和操作。对象存储库设置有访问对象的标准接口,且这些接口是对外开放的,用户只要了解这些接口,基本都能实现所需的操作。
(3)对象和对象之间的引用对象和对象之间通过引用可以组成另一个对象。如图11所示,B列1行的单元格中的对象SolidObject为 ,表示一个文本框对象,该文本框中有一个文字段落“abcd”,在对象存储库中,文字“abcd”是一个段落对象(Paragraph),放在A列201行。因此,SolidObject和段落对象共同组成了上述文本框对象。SolidObject对象中就记录了一个地址(A201)来指向段落对象。
对象在对象存储库中的位置不是一成不变的,随着内容的改变或增多,对象会根据需要调整其在对象存储库中的地址。如图11所示,如201行前插入一行,201行就会变成202行。这时,对象存储库处理程序就需要通知SolidObject调整其引用的地址,将引用地址(A201)改为(A202)。
(4)代理记录了对象在对象存储库中的存储地址,如图11所示,单元格B1中存储了对象SolidObject,则对象SolidObject的存储地址为B1,其代理记录的内容为B1。
(5)代理地址代理在代理存储区的存储地址。
图1为本发明基于对象存储库的对象引用方法流程图,在对象引用时执行步骤
步骤210、引用对象根据被引用对象,获得所述被引用对象的代理地址;步骤220、根据所述代理地址,访问被引用对象的代理;步骤230、读取所述代理记录的对象地址;步骤240、引用对象根据所述对象地址引用所述被引用对象。
本发明基于对象存储库的对象引用方法建立了一种新型的对象引用机制,即所有对象之间的引用都通过代理,将现有技术的对象之间记录地址的直接引用改变为本发明的通过代理地址的间接引用。
图2为本发明对象存储库的对象引用结构示意图。如图2所示,对象存储库中有三个对象,对象Object1、Object2和Object3。其中,对象Object1和Object2都引用了对象Object3,对象Object3已有代理Address3,代理Address3记录了对象Object3的对象地址,记为Address3=B5,同时代理Address3被存储在单元格A1,对象Object1和Object2已记录对象Object3的代理地址=A1。本发明对象引用过程为当对象Object1需要访问对象Object3时,它根据自身记录的代理地址A1,到A1单元格中访问取出代理Address3,根据其中的记录Address3=B5,得知对象Object3的对象地址是B5,进一步到B5单元格就会正确地取到对象Object3。对象Object2的访问过程也一样。图2所示的实线箭头表示实际的引用,虚线箭头表示达到的效果,是一种间接引用。
本发明对象引用过程中包括多种可能性,包括(1)引用对象已经记录了被引用对象的代理地址;(2)引用对象没有记录被引用对象的代理地址,即引用对象第一次引用被引用对象时;(3)在(2)情况中,被引用对象已经有或还没有代理地址;(4)在(3)情况中,被引用对象已经或还没有被存储在对象存储库中。
本发明的技术方案全面考虑到了上述可能性。图1所示技术方案为可能情况(1)的正常引用流程图,下面将其它情况的引用过程予以一一说明。
实施例一本实施例针对引用对象没有记录被引用对象的代理地址,即引用对象第一次引用被引用对象时的情况。在该情况下,引用对象将通过处理程序获得被引用对象的代理地址,之后执行引用流程。
图3为本发明实施例一的流程图,具体为步骤200、引用对象判断被引用对象的代理地址是否存在,不存在则执行步骤110,存在则执行步骤210;步骤110、引用对象向处理程序询问被引用对象的代理地址;步骤120、处理程序通过搜索代理存储区获得所述代理的代理地址;步骤130、处理程序将所述代理地址发给引用对象,引用对象记录所述代理地址,执行步骤210;步骤210、引用对象根据被引用对象的代理地址,访问所述代理地址;步骤220、在所述代理地址处访问被引用对象的代理;步骤230、解析得到所述代理中记录的对象地址;步骤240、引用对象根据所述对象地址访问所述被引用对象,取到所述被引用对象。
实施例二本实施例是在实施例一技术方案基础上,讨论被引用对象有或没有代理地址时的处理情况。如果被引用对象已经有代理地址,处理程序通过搜索代理存储区即可获得被引用对象的代理地址;如果被引用对象没有代理地址,即被引用对象是第一次被其他对象引用时,处理程序则在代理存储区生成一个代理,并获得其代理地址。
图4为本发明实施例二的流程图,实施例一中的步骤120具体为步骤121、处理程序在对象存储库的代理存储区搜索被引用对象的代理,搜索到时执行步骤122,没有搜索到时执行步骤123;步骤122、处理程序获得所述代理的代理地址,执行步骤130;步骤123、处理程序在对象存储库的对象存储区搜索被引用对象,获得被引用对象的对象地址;
步骤124、处理程序在对象存储库的代理存储区生成一代理;步骤125、处理程序将所述对象地址写入所述代理;步骤126、所述代理向处理程序注册其代理地址,处理程序获得所述代理的代理地址,执行步骤130。
实施例三本实施例是在实施例二技术方案基础上,讨论被引用对象已经或还没有存储在对象存储库时的处理情况。如果被引用对象已经存储在对象存储库中时,处理程序直接获得对象地址;如果被引用对象没有存储在对象存储库中时,处理程序将被引用对象存储在对象存储库的存储区中,获得对象地址,之后执行生成代理、获得代理地址等步骤。
图5为本发明实施例三的流程图,实施例二中的步骤123具体为步骤1231、处理程序在对象存储库的对象存储区搜索被引用对象,搜索到时执行步骤1232,没有搜索到时执行步骤1233;步骤1232、获得被引用对象的对象地址,执行步骤124;步骤1233、处理程序将被引用对象存储到对象存储库的对象存储区;步骤1234、处理程序记录被引用对象的对象地址,执行步骤124。
图6为本发明对象地址调整流程图。在本发明技术方案中,还包括调整对象地址的步骤,当对象地址改变时,处理程序执行如下步骤步骤310、处理程序记录所述对象新地址;步骤320、处理程序在对象存储库的代理存储区搜索所述对象的代理,搜索到时执行步骤330,没有搜索到时执行步骤350;步骤330、处理程序访问所述对象的代理;步骤340、处理程序将所述对象新地址写入所述代理;步骤350、地址调整结束。
在上述技术方案中,本发明建立了一种新型的对象地址调整机制,当被引用的对象地址发生变化时,本发明只需要通知对象存储库处理程序修改所述对象的代理地址,具体为处理程序只在代理存储区中扫描,找到记录所述对象的代理,修改代理中记载的代理地址数据。在现有技术中,当某个对象发生移动后,处理程序需要扫描整个对象存储库中的所有对象,然后逐一通知这些对象改变地址引用。在本发明技术方案中,对象存储库中设置了代理存储区,专门放置对象地址信息,并建立了对象之间通过代理进行间接引用的新型的对象引用机制,所以当某个对象发生移动后,处理程序不再需要去扫描对象存储库中的所有对象,只需要扫描范围很小的代理存储区,看这个移动对象在代理存储区是否有代理地址,若有则去改变这个代理中的代理地址数据,如果没有,说明该对象没有被其他对象引用,则什么也不需要做。同时,处理程序也不需要逐一通知引用对象来调整引用地址。显然本发明的技术方案与现有技术相比能减小因地址调整带来的额外处理过程,大大提高程序运行的速度,提高对象存储库处理程序的性能。
图7为本发明对象存储库的对象地址调整示意图。对象存储库中有三个对象,对象Object1、Object2和Object3。其中,对象Object1和Object2都引用了对象Object3。当对象Object3从单元格B5移到单元格B6后,处理程序在代理存储区中扫描,找到对象Object3的代理Address3,将其中内容Address3更新为Address3=B6。
当对象Object1或Object2访问对象Object3时,它根据自身记录的代理地址A1,到A1单元格中取出Address3=B6,得知对象Object3的地址是B6,进一步到B6单元格就会正确地取到对象Object3。
图8为本发明引用对象存储流程图。在上述技术方案中,本发明还包括引用对象的存储步骤,处理程序存储引用对象时执行如下步骤步骤410、处理程序将所述引用对象存储在对象存储库的对象存储区;步骤420、所述引用对象向处理程序注册其引用关系,向处理程序询问被引用对象的代理地址;步骤430、处理程序在对象存储库的代理存储区搜索被引用对象的代理,搜索到时执行步骤440,没有搜索到时执行步骤450;步骤440、处理程序获得所述代理的代理地址,处理程序将所述代理地址发给引用对象,引用对象记录所述代理地址,存储结束;步骤450、处理程序在对象存储库的对象存储区搜索被引用对象,获得被引用对象的对象地址;步骤460、处理程序在对象存储库的代理存储区生成一代理;步骤470、处理程序将所述对象地址写入所述代理;步骤480、所述代理向处理程序注册其代理地址,处理程序获得所述代理的代理地址;步骤490、处理程序将所述代理地址发给引用对象,引用对象记录所述代理地址,存储结束。
从本发明上述技术方案可以看出,对象存储可以划分为二种情况对象有引用关系和对象无引用关系。当对象无引用关系时,对象仍可采用现有技术的存储方式。当对象有引用关系时,又可以划分为二种情况对象是引用对象还是被引用对象。当对象是引用对象时,在其存储的同时需要记录被引用对象的代理地址;当对象是被引用对象时,则在其存储的同时建立对象代理。该技术方案十分符合设置代理存储区的目的,只有被引用对象才需要代理地址,引用对象则需要知道被引用对象的代理地址。这一点可以大量减少代理存储区管理的地址数量,使后续的引用和地址调整速度更快。本发明对象的存储是一种建立对象引用关系的存储,与现有技术单一存储相比,本发明在对象存储过程中就确立了对象间的关系,变对象之间复杂的网状引用关系为一种一对一的引用关系,使对象之间的引用关系更加清晰,便于理清。
图9为本发明对象存储库的结构示意图。如图9所示,对象存储库由电子表格构成,电子表格由一个或一个以上的行和一个或一个以上的列构成,且任一行与任一列相互交叉构成电子表格的单元格,每一个单元格保存一个且仅为一个对象或对象地址,所有单元格构成所述对象存储库。本发明对象存储库设置有二个区域对象存储区DX和代理存储区DL,对象存储区DX负责存储对象,代理存储区DL负责存储对象的代理。在本发明中,代理存储区DL设置在电子表格的第一行,如单元格A1、B1、C1......,对象存储区DX设置在电子表格除第一行以外的其他行中,如单元格A8、B5、C6......。在将对象放置在电子表格中时,分别进行对象和与对象一一对应的代理的存储,即将对象存储在对象存储区DX,并在代理存储区DL生成一个与所述对象一一对应的代理,该代理记录了对象在地址存储区的存储地址信息,本发明称之为对象地址;同时,该代理还对应有一个其存储在代理存储区的存储地址信息,本发明称之为代理地址。上述对象地址和代理地址的记录格式为列号+行号。
以图9所示为例,对象Object1、Object2和Object3分别存储在电子表格的3行D列、5行D列和5行B列的单元格内,所以其对象地址分别记为D3、D5和B5。三个对象的存储过程可以描述为(1)如果对象Object1为引用对象Object3的引用对象,且已经存储在对象存储库中,对象地址为D3,则对象Object3的存储过程为处理程序将对象Object3存储在5行B列的单元格内,记录其对象地址为B5,由于对象Object3是被引用对象,处理程序会在代理存储区生成一个代理Address3,代理Address3记录了对象Object3的对象地址,记为Address3=B5。同时,由于代理Address3存储在电子表格的1行A列的单元格内,所以其代理地址记为A1。处理程序将代理地址A1发给对象Object1,对象Object1则记录对象Object3的代理地址=A1。
(2)接例(1),如果对象Object2为引用对象Object3的引用对象,则对象Object2的存储过程为处理程序将对象Object2存储在5行D列的单元格内,由于对象Object2是引用对象,所以对象Object2向处理程序询问对象Object3的代理地址,处理程序将代理地址A1发给对象Object2,对象Object2则记录对象Object3的代理地址=A1;(3)接例(1),如果对象Object2为引用对象Object1的引用对象,则对象Object2的存储过程为处理程序将对象Object2存储在5行D列的单元格内,由于对象Object2是引用对象,所以对象Object2向处理程序询问对象Object1的代理地址。处理程序在代理存储区没有搜索到对象Object1的代理,处理程序则在代理存储区生成一个代理Address1,代理Address1记录了对象Object1的对象地址,记为Address1=D3。同时,由于代理Address1存储在电子表格的1行C列的单元格内,所以其代理地址记为C1。处理程序将代理地址C1发给对象Object2,对象Object2则记录对象Object1的代理地址=C1;(4)如果对象Object1为无引用关系对象,处理程序将对象Object1存储在3行D列单元格内,记录其对象地址为D3,与现有技术的存储过程相同。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
权利要求
1.一种基于对象存储库的对象引用方法,包括步骤210、引用对象根据被引用对象,获得所述被引用对象的代理地址;步骤220、根据所述代理地址,访问被引用对象的代理;步骤230、读取所述代理记录的对象地址;步骤240、引用对象根据所述对象地址引用所述被引用对象。
2.如权利要求1所述的基于对象存储库的对象引用方法,其中,所述步骤210前还包括步骤引用对象判断被引用对象的代理地址是否存在,存在则执行步骤210,不存在则执行下述步骤步骤110、引用对象向处理程序询问被引用对象的代理地址;步骤120、处理程序通过搜索代理存储区获得所述代理的代理地址;步骤130、处理程序将所述代理地址发给引用对象,引用对象记录所述代理地址,执行步骤210。
3.如权利要求2所述的基于对象存储库的对象引用方法,其中,所述步骤120具体为步骤121、处理程序在对象存储库的代理存储区搜索被引用对象的代理,搜索到时执行步骤122,没有搜索到时执行步骤123;步骤122、处理程序获得所述代理的代理地址,执行步骤130;步骤123、处理程序在对象存储库的对象存储区搜索被引用对象,获得被引用对象的对象地址;步骤124、处理程序在对象存储库的代理存储区生成一代理;步骤125、处理程序将所述对象地址写入所述代理;步骤126、所述代理向处理程序注册其代理地址,处理程序获得所述代理的代理地址,执行步骤130。
4.如权利要求3所述的基于对象存储库的对象引用方法,其中,所述步骤123具体为步骤1231、处理程序在对象存储库的对象存储区搜索被引用对象,搜索到时执行步骤1232,没有搜索到时执行步骤1233;步骤1232、获得被引用对象的对象地址,执行步骤124;步骤1233、处理程序将被引用对象存储到对象存储库的对象存储区;步骤1234、处理程序记录被引用对象的对象地址,执行步骤124。
5.如权利要求1所述的基于对象存储库的对象引用方法,其中,还包括调整对象地址的步骤,当对象地址改变时,处理程序执行如下步骤步骤310、处理程序记录所述对象新地址;步骤320、处理程序在对象存储库的代理存储区搜索所述对象的代理,搜索到时执行步骤330,没有搜索到时执行步骤350;步骤330、处理程序访问所述对象的代理;步骤340、处理程序将所述对象新地址写入所述代理;步骤350、地址调整结束。
6.如权利要求1所述的基于对象存储库的对象引用方法,其中,还包括引用对象的存储步骤,处理程序存储引用对象时执行如下步骤步骤410、处理程序将所述引用对象存储在对象存储库的对象存储区;步骤420、所述引用对象向处理程序注册其引用关系,向处理程序询问被引用对象的代理地址;步骤430、处理程序在对象存储库的代理存储区搜索被引用对象的代理,搜索到时执行步骤440,没有搜索到时执行步骤450;步骤440、处理程序获得所述代理的代理地址,处理程序将所述代理地址发给引用对象,引用对象记录所述代理地址,存储结束;步骤450、处理程序在对象存储库的对象存储区搜索被引用对象,获得被引用对象的对象地址;步骤460、处理程序在对象存储库的代理存储区生成一代理;步骤470、处理程序将所述对象地址写入所述代理;步骤480、所述代理向处理程序注册其代理地址,处理程序获得所述代理的代理地址;步骤490、处理程序将所述代理地址发给引用对象,引用对象记录所述代理地址,存储结束。
全文摘要
本发明涉及一种基于对象存储库的对象引用方法,包括步骤引用对象根据被引用对象,获得所述被引用对象的代理地址;根据所述代理地址,访问被引用对象的代理;读取所述代理记录的对象地址;引用对象根据所述对象地址引用所述被引用对象。本发明建立了一种新型的对象引用机制,所有对象之间通过代理间接引用,变对象之间复杂的网状引用关系为一对一的引用关系。本发明同时建立了一种新型的对象地址调整机制,当对象地址发生变化时,处理程序不再需要去扫描所有对象,只需要扫描范围很小的代理存储区,同时也不需要逐一通知引用对象来调整引用地址,因此本发明能减小因地址调整带来的额外处理过程,提高程序运行速度和对象存储库处理性能。
文档编号G06F17/30GK1808434SQ20061000303
公开日2006年7月26日 申请日期2006年1月26日 优先权日2006年1月26日
发明者黄芳, 冷晔 申请人:无锡永中科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1