小A:“單體模式一般有哪些方法?”
大B:“單體模式主要作用是保證在Java應用程序中,一個Class只有一個實例存在。一般有三種方法,下面我就具體來說說這三種方法吧。”
1、定義一個類,它的構造函數爲private的,所有方法爲static的。如java.lang.Math其他類對它的引用全部是通過類名直接引用。
例如:
publicfinalclassMath{
/**
*Dontletanyoneinstantiatethisclass.
*/
privateMath(){}
publicstaticintround(floata){
return(int)floor(a+0.5f);
}
……
}
2、定義一個類,它的構造函數爲private的,它有一個static的private的該類變量,在類初始化時實例話,通過一個public的getInstance方法獲取對它的引用,繼而調用其中的方法。
例如:
publicclassRuntime{
privatestaticRuntimecurrentRuntime=newRuntime();
publicstaticRuntimegetRuntime(){
returncurrentRuntime;
}
……
}
3、定義一個類,它的構造函數爲private的,它有一個static的private的boolean變量,用於表示是否有實例存在。
例如:
classPrintSpooler{
//thisisaprototypeforaprinter-spoolerclass
//suchthatonlyoneinstancecaneverexist
staticboolean
instanceflag=false;//trueif1instance
publicPrintSpooler()throwsSingletonException
{
if(instanceflag)
thrownewSingletonException(“Onlyonespoolerallowed”);
else
instanceflag=true;//setflagfor1instance
System.out.println(“spooleropened”);
}
//——
publicvoidfinalize()
{
instanceflag=false;//clearifdestroyed
}
}