我正在制作一个位图编辑器,其中一个文档由多个图层组成,其中每个图层都表示一个位图。与文档中当前存在的所有其他图层相比,每个图层都必须具有唯一的ID。我还需要考虑到我需要保存和加载文档以及图层ID。如何给文档中的每个对象一个唯一的ID?
我使用的命令模式来存储在文档上执行,并且唯一的ID被用于跟踪哪些层的应执行上的动作的动作。
此刻,我只是保持一个称为X计数器,当创建一个新层,它的ID设置为X,则X递增。加载时,我需要确保将X设置为适当的数字,以便为新图层赋予唯一ID,即我可以保存X的值并恢复该值,或者根据加载的最大图层ID设置X.
假设X是一个32位的号码,用户将需要创建4,294,967,296层在同一个文件上工作之前的ID开始得到重用,这将导致怪异的行为。我应该实施一个更好的独特的身份证系统吗?或者这通常足够好?
我在Java中,所以我可以使用UUID库,它根据标准算法创建128位唯一ID。尽管这似乎过分了。
这种问题是否有一些通用的方法?
您是否有一个令人信服的理由_不使用UUID? – 2010-10-27 10:10:34
我能想到的唯一的情况是1)UUID 128位ID占用更多空间,比普通整数比较慢2)UUID方法的概率性质使我感到不安(不是一个很好的理由,但你去了)。我的意思是,我是否只是按照自己的想法创建新的UUID,并期望它们始终是唯一的,即使它们是随机生成的? – RichardNewton 2010-10-27 16:48:22