单例模式
结构图

模式说明
1.单例模式一般是无状态类。
结构图
模式说明
1.单例模式一般是无状态类。
2.保证一个类仅有一个实例,并提供一个访问它的全局访问点。
public static void main(String[] args) {
Singleton instance = Singleton.getInstance();
ConcurrentSingleton inst1 = ConcurrentSingleton.getInstance();
DoubleCheckSingleton inst2 = DoubleCheckSingleton.getInstance();
StaticInitializationSingleton inst3 = StaticInitializationSingleton
.getInstance();
}
public class ConcurrentSingleton {
private static ConcurrentSingleton instance;
private static Object lock = new Object();
private ConcurrentSingleton() {
}
public static ConcurrentSingleton getInstance() {
synchronized (lock) {
if (instance == null) {
instance = new ConcurrentSingleton();
}
}
return instance;
}
}
public class DoubleCheckSingleton {
private static DoubleCheckSingleton instance;
private static Object lock = new Object();
private DoubleCheckSingleton() {
}
public static DoubleCheckSingleton getInstance() {
if (instance == null) {
synchronized (lock) {
if (instance == null) {
instance = new DoubleCheckSingleton();
}
}
}
return instance;
}
}
public class StaticInitializationSingleton {
private final static StaticInitializationSingleton instance = new StaticInitializationSingleton();
private StaticInitializationSingleton() {
}
public static StaticInitializationSingleton getInstance() {
return instance;
}
}