小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
}
}