单例模式与工程模式
一、单例模式
(一)、饿汉模式
public class SingletonPattern {
private SingletonPattern singletonPattern = new SingletonPattern();
private SingletonPattern(){
}
public SingletonPattern getInstance(){
return singletonPattern;
}
}
(二)、懒汉模式
实现方式一
public class SingletonPattern {
private volatile SingletonPattern singletonPattern;
private SingletonPattern(){
}
public SingletonPattern getInstance(){
if (singletonPattern==null) {
synchronized(this){
if (singletonPattern==null) {
singletonPattern=new SingletonPattern();
}
}
}
return singletonPattern;
}
}
实现方式二:
public class SingletonPattern {
//饿汉式的单列
private static class SingletonHolder {
private static final SingletonPattern INSTANCE = new SingletonPattern();
}
private SingletonPattern() {
}
//在第一次调用getInstance时,classLoader会加载SingletonHolder初始化INSTANCE,通过classLoader来同步
public SingletonPattern getInstance(){
return SingletonHolder.INSTANCE;
}
使用场景