java 单例模式总结

实现方式一 丶 饿汉式

package com.qyw.pattern.singleton;
 
public class Singleton implements Serializable {
	private static Singleton instance = new Singleton();
 
	private Singleton() {
	}
 
	public static Singleton getInstance() {
		return instance;
	}

    //保证被反序列化过后还是单例
     private Object readResolve(){ 
        return instance; 
    }

}

实现方式二 丶懒汉式-(double-checked locking)

package com.qyw.pattern.singleton;
 
public class Singleton  {
	private static volatile Singleton instance;
 
	private Singleton() {
	}
 
	public static Singleton getInstance() {
		if (instance == null) {
			synchronized (Singleton.class) {
				if (instance == null) {
					instance = new Singleton();
				}
			}
		}
		return instance;
	}
}

实现方式三丶延迟初始化占位(Holder)类模式   推荐使用

package com.qyw.pattern.singleton;
 
public class Singleton {
	private static class InstanceHolder {
		public static Singleton instance = new Singleton();
	}
 
	private Singleton() {
	}
 
	public static Singleton getInstance() {
		return InstanceHolder.instance;
	}
}

实现方式四丶枚举方式      推荐使用    


 public enum Instance {
     INSTANCE    //同样可以像普通类一样定义普通的方法变量等
 }

猜你喜欢

转载自blog.csdn.net/shadow_zed/article/details/81387926