保证一个类仅有一个实例,并提供一个访问它的全局访问点。
UML图:
实现代码:
懒汉式
public class LazySingleton {
private static LazySingleton instance;
private static Object lock = new Object();
private LazySingleton() {}
public static LazySingleton getInstance() {
if(instance == null) {
synchronized (lock) {
if(instance == null) {
instance = new LazySingleton();
}
}
}
return instance;
}
}
饿汉式
public class HungrySingleton {
private static HungrySingleton instance = new HungrySingleton();
private HungrySingleton() {}
public static HungrySingleton getInstance() {
return instance;
}
}