28

volatile/lazy シングルトン、eager シングルトン、ノーマル シングルトン、Enum など、条件に応じてさまざまな方法でシングルトンを開発しましたが、具体的には、以下に示す静的ホルダー パターン シングルトンについて知りたいです。

public static class Singleton {
    private static class InstanceHolder {
        public static Singleton instance = new Singleton();
    }

    private Singleton(){}

    public static Singleton getInstance() { 
        return InstanceHolder.instance;
    }
}

どのような条件で効果があり、どのような効果があるのか​​教えてください。

4

2 に答える 2

7

これは、JVMがクラスをロードする方法を利用して、スレッドセーフなレイジーシングルトンを作成する方法です。BlochのEffectiveJavaブックで、その理由と方法について詳しく読むことができます。

testable codeシングルトン(および一般的なグローバル状態)の観点からは有益ではないため、避ける必要があることを忘れないでください。

于 2013-02-22T07:57:29.057 に答える