設計模式(一)單例模式:4-靜態代碼塊模式


思想:

 

  這種靜態代碼塊模式,本質上是餓漢模式的一個變種。

  它將類的靜態 Field 的初始化,轉移到靜態代碼塊中(這么做的優勢尚不明確)。

  在 JDK 源碼中有一個具體的例子:sun.misc.Unsafe (是 Java 代碼用來直接操作內存空間的類)。

  實現方式,就是把初始化的工作,放到靜態代碼塊中。

 

public final class StaticBlockSingleton {

    private static final StaticBlockSingleton instance;

    private static String str1;
    private static String str2;

    private StaticBlockSingleton() {
        if (instance != null) {
            throw new IllegalStateException();
        }
    }

    static {
        instance = new StaticBlockSingleton();
        str1 = "Field1";
        str2 = "Field2";
    }

    public static final StaticBlockSingleton getInstance() {
        return instance;
    }

}

 

  • 反射?多線程?優勢?劣勢?

  與餓漢模式相同。見:設計模式(一)單例模式:1-餓漢模式(Eager)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM