我想写一个java类,它只能被实例化5次,就像你只有一个实例的单例类一样。
除此之外,应该在循环的基础上选择实例。
假设我有一个类A,我应该只能创建这个类的5个实例。假设我有InstanceA_1,InstanceA_2,InstanceA_3,InstanceA_4,InstanceA_5,每当我需要使用它们的时候,都应该按轮询的方式来选择它们。
发布于 2010-08-04 02:05:37
正如Effective Java2 Edition推荐使用enum来实现单例一样,该方案也使用enum来实现单例。四胞胎?
import java.util.*;
public enum RoundRobin {
EENIE, MEENIE, MINY, MO;
private final static List<RoundRobin> values =
Collections.unmodifiableList(Arrays.asList(values()));
// cache it instead of creating new array every time with values()
private final static int N = values.size();
private static int counter = -1;
public static RoundRobin nextInstance() {
counter = (counter + 1) % N; // % is the remainder operator
return values.get(counter);
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(RoundRobin.nextInstance());
}
// EENIE, MEENIE, MINY, MO, EENIE, MEENIE, MINY, MO, ...
}
}将其扩展到五元组是不言而喻的。
另请参阅
的最佳方法
相关问题
发布于 2010-08-04 01:54:09
你需要像Object pool这样的东西。最简单的实现是有一个包含5个对象的List的单例,无论何时调用getInstance(..),都应该迭代该列表并返回其中一个对象。
发布于 2010-08-04 01:52:39
这是家庭作业吗?
为什么不创建一个Factory来创建5个实例,并将它们存储在列表中?当有人调用Factory.getInstance()时,它将使用列表的正确索引获得正确的实例。
https://stackoverflow.com/questions/3399191
复制相似问题