应用场景 :当系统中某个类只能创建一个实例时。
例如:Windows系统中的垃圾箱
解决方案 :
1)将该类的构造器声明为私有。
2)将该类唯一对象的引用保存在一个私有(private), 静态(Static)的属性中。
3)提供一个公有,静态方法来访问该对象。
实现代码:
public class SingletonClass {
private static SingletonClass instance = new SingletonClass ();
public static SingletonClass getSingletonClassObject() {
return instance;
}
private SingletonClass() {
// do sth here ...
}
// more methods ...
}
测试类:
public class TestSingtonClass {
public static void main(String[] args) {
SingletonClass s1 = SingletonClass.getSingletonClass();
SingletonClass s2 = SingletonClass.getSingletonClass();
System.out.println(s1);
System.out.println(s2);
// use SingletonClass object here ...
}
}
JDK中范例:
参考java.lang.Runtime类的JDK源代码
......
public class Runtime {
private static Runtime currentRuntime = new Runtime();
public static Runtime getRuntime() {
return currentRuntime;
}
/** Don't let anyone else instantiate this class */
private Runtime() {}
......
}