1. 程式人生 > >另一種實現“飢漢”與“懶漢”

另一種實現“飢漢”與“懶漢”

一般實現飢漢用的是靜態關鍵字。在類載入時,提前載入靜態區的內容。而懶漢則是實現單例模式。靜態內容,在呼叫時才載入。

關於類載入,還可以用class.getInstance(); 和 類.class;

此兩者區別就是靜態載入的時間機。看下程式碼:

public class Singleten {
	
	private Singleten() {}
	private static Singleten instance = null;//該靜態引數並不會第一時間載入,而是呼叫到public getInstance()方法時才初始化
	public static int a = 22;
	static{
		System.out.println("step1");//靜態塊,只要呼叫到該類就會載入。
	}
	public static Singleten getInstance() {
		if(instance == null) {
			instance = new Singleten();//該行去掉,及時被呼叫,其靜態的成員、塊都不會被載入
		}
		
		System.out.println("step2");
		return instance;
	}
	
}

public class MainTest {
	public static void main(String[] args) {
//		Singleten.getInstance();
		System.out.println(Singleten.a);
	}
}