[設計模式]——單例模式_doubleChecking

/**
 * 單例創建的方式
 * 1、懶漢式
 * 	1)構造器私有化
 * 	2)聲明私有的靜態屬性
 * 	3)對外提供訪問屬性的靜態方法,確保該對象存在
 * 
 * @author Administrator
 *
 */
public class MyJvm2 {
	private static MyJvm2 instance;
	private MyJvm2(){
	}
	public static MyJvm2 getInstance(){
		if (null==instance) {//提高效率
			synchronized (MyJvm2.class) {
				if (null==instance) {//安全
					instance=new MyJvm2();
				}
			}
		}
		return instance;
	}
}
/**
 * 餓漢式
 * 1)構造器私有化
 * 2)聲明私有的靜態屬性,同事創建該對象
 * 3)對外提供訪問屬性的靜態方法
 */
class MyJvm1 {
	private static MyJvm1 instance=new MyJvm1();
	private MyJvm1(){
	}
	public static MyJvm1 getInstance(){
		return instance;
	}
}
/**
 * 類在使用的時候加載,延緩了加載時間
 * @author Administrator
 *
 */
class MyJvm3 {
	private static class JVMholder{
		private static MyJvm3 instance=new MyJvm3();
	}
	private MyJvm3(){
	}
	public static MyJvm3 getInstance(){
		return JVMholder.instance;
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章