0

最近、シングルトンパターンを学びました。そして、1つを実現する必要がありました。例えば:

public class Singleton {
    private static Singleton instance;

    private InnerObject innerObject; //all functionality is here

    private Singleton() {
        innerObject = new InnerObject();
    }

    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }

    public InnerObjectResult getResult() {
        return innerObject.getResult(); //delegate method call
    }
}

しかし、以前は次のように認識していました。

public class Singleton {
    private static InnerObject innerObject;

    static {
        innerObject = new InnerObject();
    }

    public static InnerObjectResult getResult() {
        return innerObject.getResult();
    }
}

したがって、結果は同じです。innerObject は 1 回初期化されますが、コードはよりクリーンになり、マルチスレッドについて心配する必要はありません。パターンが特定の言語に依存していないことは知っていますし、おそらく他の場所ではこのようなことはできないでしょうが、私はこの特定の状況に興味があります. どうもありがとうございました!

4

0 に答える 0