这两种实现单例的方式在功能上有什么区别吗?
public class MySingleton {
private static MySingleton instance;
public static MySingleton getInstance() {
if (instance == null) {
instance = new MySingleton();
}
return instance;
}
}
public class MySingleton {
private static final MySingleton instance = new MySingleton();
public static MySingleton getInstance() {
return instance;
}
}
除此之外,第一种方式允许某种 clearInstance() 方法。尽管您可以在第二种方法中使实例不是最终的。
第一种方法在技术上是否表现更好,因为它只在第一次需要时而不是在程序启动时初始化?
最佳答案
第一个是延迟加载,第二个是预加载。也许您的应用程序永远不会调用单例,因此如果创建单例的新实例是消耗大量资源的操作,那么延迟加载会更好,因为它会在需要时创建新实例。
关于java - 在 getInstance() 方法或实例变量定义中初始化单例之间是否存在功能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53242220/