设计模式(003) 单例模式[上] 单身懒汉
什么是单例模式(What)?
public class LazyUnsafeSingleton {
private volatile static LazyUnsafeSingleton instance;
private LazyUnsafeSingleton() {
}
public static LazyUnsafeSingleton getInstance() {
if (null == instance) {
instance = new LazyUnsafeSingleton();
}
return instance;
}
}public class LazyDoubleCheckSingleton {
private volatile static LazyDoubleCheckSingleton instance;
private LazyDoubleCheckSingleton() {
Logger.getGlobal().info("LazyDoubleCheckSingleton.LazyDoubleCheckSingleton()");
}
public static LazyDoubleCheckSingleton getInstance() {
if (null == instance) {
synchronized (LazyDoubleCheckSingleton.class) {
if (null == instance) {
instance = new LazyDoubleCheckSingleton();
}
}
}
return instance;
}
}public class LazyHolderSingleton {
private static class InstanceHolder {
private static final LazyHolderSingleton INSTANCE = new LazyHolderSingleton();
}
private LazyHolderSingleton() {
Logger.getGlobal().info("LazyHolderSingleton.LazyHOlderSingleton()");
}
public static LazyHolderSingleton getInstance() {
return InstanceHolder.INSTANCE;
}
}public class LazyMethodSynSingleton {
private static LazyMethodSynSingleton instance;
private LazyMethodSynSingleton() {
Logger.getGlobal().info("LazyMethodSynSingleton.LazyMethodSynSingleton()");
}
public static synchronized LazyMethodSynSingleton getInstance() {
if (null == instance) {
instance = new LazyMethodSynSingleton();
}
return instance;
}
}原文地址:http://blog.csdn.net/ysjian_pingcx/article/details/45913139