思想:
这种静态代码块模式,本质上是饿汉模式的一个变种。
它将类的静态 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)