作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我们最近介绍了单例模式,从那以后我发现它有很多很好的用途,但只有一件非常小的事情让我烦恼。我注意到在我看到的每个单例模式示例中,标准的 getInstance() 方法如下所示:
private static Singleton instance = null;
public static Singleton getInstance() {
if ( instance == null )
instance = new Singleton();
return instance;
}
我想知道的是,检查实例变量是否为空是否有意义?
如果您直接将实例变量分配给一个新的 Singleton 实例并像这样返回它,它会工作吗:
private static Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
很抱歉,如果这个问题看起来是在浪费时间,但我只是想知道是否有任何理由说明为什么第一个示例在所有地方都被使用。
感谢您的宝贵时间。
编辑:忘记将方法设为静态。
最佳答案
两者都是创建单例实例的有效方法。前者称为延迟初始化,后者称为急切初始化
如果单例实例的创建成本高,延迟初始化会有所帮助。在这种情况下,仅在需要时才创建单例实例。
另一方面,急切初始化默认是线程安全的
关于java - 关于辛格尔顿的事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22298877/
我是一名优秀的程序员,十分优秀!