Write a Java class and create only five instances of it
I want to write a Java class that can only be instantiated five times, just like a singleton class with only one instance
In addition, instances should be selected in a circular manner
Suppose I have a class A I should only be able to create 5 instances of this class Suppose I have instancea_ 1,InstanceA_ 2,InstanceA_ 3,InstanceA_ 4,InstanceA_ 5. Whenever I need to use them, I should cycle through them
Solution
Just as effective Java 2nd Edition recommends enumerating singletons, this solution also uses enumerations to implement... Quadripleton?
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,MO,EENIE,...
}
}
It is self - evident to extend it to quintuples
You can also have a look
>Effective Java 2nd Edition, which enforces singleton properties using private constructors or enumeration types
Related issues
> Efficient way to implement singleton pattern in Java
