В приведенном ниже фрагменте кода, когда я его изначально проектировал, «следующее число» было необходимо для отправки следующего увеличенного значения во время выполнения приложения. Таким образом, я сделал класс синглтоном. Однако, с некоторыми недавними изменениями в требованиях, мне нужно было сделать сброс на «следующий номер». Я просто добавил метод сброса, чтобы сделать это. Тем не менее, это определенно нарушает шаблон Singleton, и я также знаю, что не стоит так инициализировать статический элемент.
Как вы думаете, что я должен делать вместо этого?
public final class GetNextNumber {
private static GetNextNumber instance;
private static Integer nextNumber=1;
private GetNextNumber() {
}
public static synchronized GetNextNumber getInstance() {
if(instance==null){
instance = new GetNextNumber();
}
return instance;
}
protected Integer getNextNumber(){
return nextNumber++;
}
protected synchronized void reset(){
nextNumber=1;
}
public Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException();
}
}