单例模式(饿汉 vs懒汉)

package 单例模式;
/*
 * 应用场景:保证在整个应用之中某个对象的实例只有一个
 * 单例模式种的《 懒汉模式》  
 * */
public class Singleton {
	
	//01 将构造方法私有化,外界就无法用new Singleton()的方式获得实例
	private Singleton(){};
	
	//02 申明类得唯一实例
	private static Singleton instance = null;
	
	//为外界提供获得实例的方法
	public static Singleton getInstance(){
		if(null == instance){//懒汉模式    在Singleton类加载时并没有创建Singleton的实例,当Singleton的实例为null时才创建
			instance=new Singleton();
		}
		return instance;
	}

}


package 单例模式;
/*
 * 应用场景:保证在整个应用之中某个对象的实例只有一个
 * 单例模式种的《 饿汉模式》  较之懒汉模式线程较安全
 * */
public class Singleton1 {
	
	//01 将构造方法私有化,外界就无法用new Singleton()的方式获得实例
	private Singleton1(){};
	
	//02 创建实例
	private static Singleton1 instance = new Singleton1();//饿汉模式 是在类加载时就创建实例
	
	//为外界提供获得实例的方法
	public static Singleton1 getInstance(){
		return instance;
	}

}


package 单例模式;

public class Test {

	public static void main(String[] args) {
		
		Singleton singleton = Singleton.getInstance();
		System.out.println(singleton);
	}
	
}

你可能感兴趣的