我正在製作一個位圖編輯器,其中一個文檔由多個圖層組成,其中每個圖層都表示一個位圖。與文檔中當前存在的所有其他圖層相比,每個圖層都必須具有唯一的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