这两种实现单例的方式在功能上有什么区别吗?
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() 方法。尽管您可以在第二种方法中使实例不是最终的。
第一种方法在技术上是否表现更好,因为它只在第一次需要时而不是在程序启动时初始化?
第一个是延迟加载,第二个是预加载。也许您的应用程序永远不会调用单例,因此如果创建单例的新实例是消耗大量资源的操作,那么延迟加载会更好,因为它会在需要时创建新实例。
我是一名优秀的程序员,十分优秀!