设计模式(一)单例模式: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)

 

posted @ 2017-09-10 17:32  Gerrard_Feng  阅读(1784)  评论(0编辑  收藏  举报