singleton模式:
singleton模式主要作用是保证在java应用程序中,一个class只有一个实例存在。
一般有三种方法:
1 定义一个类,它的构造函数为private的,所有方法为static的。如java.lang.math
其他类对它的引用全部是通过类名直接引用。例如:
public final class math {
/**
* don't 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
instance_flag=false; //true if 1 instance
public printspooler() throws singletonexception
{
if (instance_flag)
throw new singletonexception("only one spooler allowed");
else
instance_flag = true; //set flag for 1 instance
system.out.println("spooler opened");
}
//-------------------------------------------
public void finalize()
{
instance_flag = false; //clear if destroyed
}
}
闽公网安备 35060202000074号