單例模式

文檔查閱說明:

Tongkey

yiibai

runoob

大話設計模式

定義:保證一個類僅有一個實例,並提供一個訪問它的全局訪問點

使用場景:

● 要求生成唯一序列號的環境;

● 在整個項目中需要一個共享訪問點或共享數據,例如一個Web頁面上的計數器,可以不用把每次刷新都記錄到數據庫中,使用單例模式保持計數器的值,並確保是線程安全的;

● 創建一個對象需要消耗的資源過多,如要訪問IO和數據庫等資源;

● 需要定義大量的靜態常量和靜態方法(如工具類)的環境,可以採用單例模式(當然,也可以直接聲明爲static的方式)

 通用代碼:(線程安全的):

public class Singleton {
    private static final Singleton singleton = new Singleton();
    
    private Singleton(){}

    public static Singleton getSingleton(){
            return singleton;
    }  
}

 線程不安全: 

public class Singleton {
	private static Singleton singleton;
	
	private Singleton() {}
	
	public static Singleton getSingleton() {
		if(singleton == null) {
			singleton = new Singleton();
		}
		return singleton;
	}
}
public class Test {
	public static void main(String[] args) {
		Singleton singletonA = Singleton.getSingleton();
		Singleton singletonB = Singleton.getSingleton();
		
		if(singletonA == singletonB) {
			System.out.println("相同的實例類");
		}
	}
}

 

 

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