【发布时间】:2016-11-02 05:08:54
【问题描述】:
使用静态同步 getInstance 方法的单例的正确用法是什么?为什么?
例如:
MySingleton mySingleton = MySingleton.getInstance();
.....
mySingleton.doSomething();
mySingleton 将是一个字段并在整个班级中使用。
对
MySingleton.getInstance().doSomething();
编辑:正确地说,我的意思是编码风格和线程安全。
【问题讨论】:
-
理想情况下,您根本不会使用单例。必要时,我更喜欢使用
enum,在这种情况下我会写MySingleton.INSTANCE.doSomething() -
这两个例子是相同的,尽管@PeterLawrey 推荐单例枚举是正确的。
-
定义“正确”——您具体要问什么?除了在第一个示例中获取实例并稍后使用之外,它是相同的。
-
@AaronDavis 和 PeterLawrey 关于不使用静态单例更加正确。
-
@Jesper 在大多数情况下是正确的 :-)