java設計模式:單例模式

單例模式介紹:
單例模式分:懶漢式單例、餓漢式單例。
單例模式有一下特點:
1、單例類只能有一個實例。
2、單例類必須自己自己創建自己的唯一實例。
3、單例類必須給所有其他對象提供這一實例。
單例模式確保某個類只有一個實例,而且自行實例化並向整個系統提供這個實例。
單例有併發問題,只有一個實例,多個線程就可能同時或不同時訪問它,那麼它的狀態(屬性成員)的一致性就是個問題,寫入狀態的方法必須同步。

單例模式的應用:
在計算機系統中,線程池、緩存、日誌對象、對話框、打印機、顯卡的驅動程序對象常被設計成單例。
sping配置文件bean默認singleton=true,在spring的beanfactory當中這個bean實例只有一個。
在GoF中的單例模式是指一個ClassLoader中只存在類一個實例。
而在Spring中的單例實際上更確切的說應該是:
1.每個Spring Container中定義的Bean只存在一個實例
2.每個Bean定義只存在一個實例。

1. 餓漢式單例類
//餓漢式單例類.在類初始化時,已經自行實例化 
public class Singleton {
	
	// 私有默認構造
	private Singleton() {
	}

	//自行實例化
	private static final Singleton single = new Singleton();

	//靜態工廠方法
	public static Singleton getInstance() {
		return single;
	}
	
}

2. 懶漢式單例類
//懶漢式單例類.在第一次調用的時候實例化 
public class Singleton {

	// 私有的默認構造子
	private Singleton() {
	}

	//注意,這裏沒有final
	private static Singleton single = null;

	//靜態工廠方法
	public synchronized static Singleton getInstance() {
		if (single == null) {
			single = new Singleton();
		}
		return single;
	}

}

參考文章:
http://devbean.blog.51cto.com/448512/203501/
http://www.cnblogs.com/whgw/archive/2011/10/05/2199535.html
http://www.2cto.com/kf/201207/141823.html

發佈了125 篇原創文章 · 獲贊 39 · 訪問量 63萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章