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