在我最初設計它時,在下面的代碼片段中,需要「下一個數字」在應用程序執行過程中發送下一個遞增值。所以我讓這個課變成了一個單身人士。然而,隨着最近需求的一些變化,我需要重新設置「下一個數字」。我剛剛添加了一個重置方法來做到這一點。但是,它肯定違反了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();
}
}
你並不需要一個clone()方法。它所做的就是重現默認行爲。由於你的班級是最終的,並且不實施Cloneable,所以無論如何都沒有任何其他行爲。它也使克隆()公開而不是保護,在這種情況下,這是徒勞的。 – EJP 2010-11-07 00:11:37