Create table class as a singleton
- by Mark
I got a class that I use as a table.
This class got an array of 16 row classes.
These row classes all have 6 double variables.
The values of these rows are set once and never change.
Would it be a good practice to make this table a singleton? The advantage is that it cost less memory, but the table will be called from multiple threads so I have to synchronize my code which way cause a bit slower application. However lookups in this table are probably a very small portion of the total code that is executed.
EDIT: This is my code, are there better ways to do this or is this a good practice? Removed synchronized keyword according to recommendations in this question.
final class HalfTimeTable {
private HalfTimeRow[] table = new HalfTimeRow[16];
private static final HalfTimeTable instance = new HalfTimeTable();
private HalfTimeTable() {
if (instance != null) {
throw new IllegalStateException("Already instantiated");
}
table[0] = new HalfTimeRow(4.0, 1.2599, 0.5050, 1.5, 1.7435, 0.1911);
table[1] = new HalfTimeRow(8.0, 1.0000, 0.6514, 3.0, 1.3838, 0.4295);
//etc
}
@Override
@Deprecated
public Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException();
}
public static HalfTimeTable getInstance() {
return instance;
}
public HalfTimeRow getRow(int rownumber) {
return table[rownumber];
}
}