java單例設計模式

1目的:

保證整個應用中有且只有一個實例,即只允許我們創建一個對象,從而避免因爲創建了多個實例而造成資源的浪費,且多個實例由於多次調用容易導致結果出現錯誤的發生。

2思想:

(1)不允許其他程序用new對象。

(2)在該類中創建對象。

(3)對外提供一個可以讓其他程序獲取該對象的方法。即需分爲三步創建:

(1)私有化該類的構造函數。

(2)通過new在本類中創建一個本類對象。

(3)定義一個公有的方法,將在該類中所創建的對象返回。

3寫法:

(1)惡漢式:加載時初始化,能保證線程安全

public class Singleton{
	private static Singleton instance = new Singleton();
	public static getInstance(){
		return instance;
	}
}
訪問方式
Singleton instance = Singleton.getInstance();
(2)懶漢式:不在加載時初始化,保證線程安全

public class Singleton1{
	private static Singleton1 intence=null;
	public static Singleton1 getInstence(){
		if (intence == null){
			synchronized(Singleton1.class){
				if (intence == null){
					instence = new Singleton1();
				}
			}
		}
	return instence;
	}
}
訪問方式

Singleton1 instence = Singleton1.getInstance();

(3)內部類:不在加載時初始化,保證線程安全

public class Singleton2{ 
	private static class InstanceHolder{//類進行初始化時,別的線程不可以進入
		private stacic Singleton2 instance = new Singleton2();
	}
	public static Singleton2 getInstance(){
		return InstanceHolder.instance;
	}
}
訪問方式:
Singleton2 instance = Singleton2.getInstance();






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