单例模式

63 阅读1分钟

饿汉式 懒汉式 双重检查锁 静态内部类 枚举

  1. 双重检查锁
public class singleton{
	private singleton(){}
	private static volatile Singleton singleton;
	public static Singleton getInstance(){
		if (null == singleton){
			synchronized(Singleton.class){
				if(null == singleton){
					singleton=new Singleton();
				}
			}		
		}
	}
}
  1. 静态内部类
public class Singleton{
	private Singleton(){}
	private static class SingletonFactory{
		private static Singleton singleton=new Singleton();
	}
	public static Singleton getInstance(){
		return SingletonFactory.singleton;
	}
}
  1. 枚举类
public enum Singleton{
	INSTANCE;
	public Singleton  getInstance(){
	        return INSTANCE;
	 }
}