我有 0..n 个对象,每个对象都需要一个唯一标识符,它们是通过这种方式创建的:
public class Squirrel {
private static numSquirrels = 0;
private String id = null;
public Squirrel() {
this(String.valueOf(numSquirrels++);
}
public Squirrel(String id) {
this.id = id;
}
}
这在几个方面是一个问题,但我会给出一个:
在进行单元测试时,numSquirrels 变量会在测试之间延续,即使我可能正在使用不同的松鼠种群。这意味着当我想重新开始时,他们的 ID 会继续增加。
- 现在是使用 SquirrelFactory 的正确时间吗(孩子们喜欢的那种)?
- 我应该使用依赖注入将工厂传递给 Squirrel 对象,还是应该将 Squirrel 类包含在与外部世界有接口的 Squirrel Factory 中?
- 如果我希望用户能够设置 ID(或至少建议 ID),如何确保唯一性?