另一種實現“飢漢”與“懶漢”
阿新 • • 發佈:2019-02-12
一般實現飢漢用的是靜態關鍵字。在類載入時,提前載入靜態區的內容。而懶漢則是實現單例模式。靜態內容,在呼叫時才載入。
關於類載入,還可以用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);
}
}