作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
实现单例设计模式的标准方法是这样的:
public class Singleton {
private static Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
private Singleton() {}
}
我想知道你是否也可以这样实现它:
public class Singleton {
private Singleton() {}
public final static Singleton INSTANCE = new Singleton();
}
如果是,哪个版本更好?
最佳答案
都没有。在这两种情况下,受信任的消费者都可以通过反射调用私有(private)构造函数。另一个问题是,这些实现不能很好地处理序列化,除非您采取额外的步骤来做到这一点(默认情况下,如果您采用天真的方法,每次 Singleton
被反序列化,它将创建一个新实例)。
正确的解决方案是使用定义单个值的 enum
。
public enum Singleton {
INSTANCE;
// methods
}
来自 Effective Java:
While this approach is yet to be widely adopted, a single-element enum type is the best way to implement a singleton.
关于java - 替代地实现单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18200923/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!