1. 程式人生 > >單例模式---靜態內部類

單例模式---靜態內部類

package javaTestpack;

//Fil內沒有static屬性,則不會像餓漢式那樣立即載入物件
class Sign{
	//只有使用Fil類裡getInstace()方法時才載入內部類並建立單例 且執行緒安全 
	//呼叫效率高 且實現了延時載入
	private static class SignInstance{
		private static final Sign instance = new Sign();
	}
	
	//私有化構造器
	private Sign(){}
	
	public static Sign getInstance(){
		return SignInstance.instance;  
	}
}

public class Test{
	public static void main(String[] args) {
		Sign s1 = Sign.getInstance();
		System.out.println(s1);
		Sign s2 = Sign.getInstance();
		System.out.println(s2);
	}
}

執行結果:

[email protected]
[email protected]
結論:

1.只有真正呼叫getInstance()時才會載入靜態內部類

2.載入類時執行緒安全

3.instance是static final型別 保證記憶體中只有這樣一個例項,而且只能被賦值一次

4.兼備了併發高效呼叫和延遲載入的優勢