书城计算机大话设计模式
11030400000053

第53章 4 单体模式的一般方法

小A:“单体模式一般有哪些方法?”

大B:“单体模式主要作用是保证在Java应用程序中,一个Class只有一个实例存在。一般有三种方法,下面我就具体来说说这三种方法吧。”

1、定义一个类,它的构造函数为private的,所有方法为static的。如java。lang。Math其他类对它的引用全部是通过类名直接引用。

例如:

public final class Math{

/ *Dont let anyone instantiate this class。

*/

private Math(){}

public static int round(float a){

return(int)floor(a 0.5f);

}

……

}

2、定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。

例如:

public class Runtime{

private static Runtime currentRuntime=new Runtime();

public static Runtime getRuntime(){

return currentRuntime;

}

……

}

3、定义一个类,它的构造函数为private的,它有一个static的private的boolean变量,用于表示是否有实例存在。

例如:

class PrintSpooler{

//this is a prototype for a printer-spooler class

//such that only one instance can ever exist

static boolean

instanceflag=false;//true if 1 instance

public PrintSpooler()throws SingletonException

{

if(instanceflag)

throw new SingletonException(“Only one spooler allowed”);

else

instanceflag=true;//set flag for 1 instance

System。out。println(“spooler opened”);

}

//――

public void finalize()

{

instanceflag=false;//clear if destroyed

}

}