最近我学会了Singleton模式。并且必须实现一个。例如:
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初始化一次,但代码更清晰,我不必担心多线程。我知道这种模式并不依赖于特定语言,可能你不能在其他地方做这样的事情,但我对这种特殊情况感兴趣。非常感谢你!