最近、シングルトンパターンを学びました。そして、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 回初期化されますが、コードはよりクリーンになり、マルチスレッドについて心配する必要はありません。パターンが特定の言語に依存していないことは知っていますし、おそらく他の場所ではこのようなことはできないでしょうが、私はこの特定の状況に興味があります. どうもありがとうございました!