【发布时间】:2015-08-17 19:15:34
【问题描述】:
我说的特别是关于使用静态变量来实现这一点。考虑 Java 中的以下对象:
public class MyObject{
private static ArrayList<String> ID_List = new List<String>();
private String ID_Number;
public MyObject(){
/* Assign a random number to ID_Number
* And ensure that this is a unique number
* not found in ID_List. Then add it to ID_List. */
}
/* Other methods and such */
}
在某种程度上,这是为了确保制作的每个对象都具有易于访问和阅读的独特且可区分的属性。但是,我不确定同一类型的所有对象之间的这种奇怪的耦合是否是好的做法。
由于这让我感到不舒服,我倾向于认为这不是一个好主意。以 OOP 方式思考这个问题的正确方法是什么?
【问题讨论】:
-
你将如何处理对象
deletion?它的 ID 会从列表中删除吗? -
ArrayList 的内容会在多个对象的创建过程中持续存在,还是每个新对象都会带来一个新的(和空的)ID_List?
-
我认为你需要一个对象映射,每个对象都有一个唯一的键
-
MyObject本身在没有唯一 ID 的情况下能否正常工作?也就是这个ID只有MyObjects的人用吗? -
您可以考虑使用
UUID。 (这使用了足够多的位,以至于发生碰撞的概率低得离谱,不值得担心。)