大话设计模式
字体: 16 + -

第53章

小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

}

}