第53章

bookmark

小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

}

}

第173章第81章第195章第95章第40章第68章第52章第205章第165章第118章第32章第4章第102章第73章第172章第115章第54章第83章第155章第36章第121章第119章第123章第200章第100章第106章第180章第41章第76章第188章第213章第115章第21章第99章第213章第73章第153章第167章第4章第65章第61章第170章第6章第140章第23章第183章第199章第73章第142章第187章第88章第67章第41章第150章第207章第60章第81章第145章第62章第142章第173章第197章第91章第12章第48章第156章第45章第56章第109章第137章第61章第127章第92章第183章第101章第174章第24章第15章第53章第17章第132章第139章第198章第182章第191章第218章第128章第120章第212章第181章第17章第32章第173章第98章第11章第88章第219章第118章第144章第200章
第173章第81章第195章第95章第40章第68章第52章第205章第165章第118章第32章第4章第102章第73章第172章第115章第54章第83章第155章第36章第121章第119章第123章第200章第100章第106章第180章第41章第76章第188章第213章第115章第21章第99章第213章第73章第153章第167章第4章第65章第61章第170章第6章第140章第23章第183章第199章第73章第142章第187章第88章第67章第41章第150章第207章第60章第81章第145章第62章第142章第173章第197章第91章第12章第48章第156章第45章第56章第109章第137章第61章第127章第92章第183章第101章第174章第24章第15章第53章第17章第132章第139章第198章第182章第191章第218章第128章第120章第212章第181章第17章第32章第173章第98章第11章第88章第219章第118章第144章第200章