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