我已经阅读了一段时间的单例模式,当我用Java语言搜索Singleton类时,我发现Runtime是一个例子但是当我查看源代码时,我发现了一个非常基本的Singleton实现:
private static Runtime currentRuntime = new Runtime();
public static Runtime getRuntime() {
return currentRuntime;
}
private Runtime() {}
虽然在互联网上有很多关于单身人士课程应该如何写的。我想知道的是哪个Java语言类最适合作为Singleton类示例,为什么?
答案 0 :(得分:1)
是的,这是一个非常基本的单身人士。它做了它应该做的事情,没有特别的装饰。
你在互联网上找到的例子通常描述一个懒惰的初始化单例,强调getInstance()
的性能(即避免同步,如果多个线程调用getInstance()
则不允许创建多个实例在同一时间等等。
如果你不需要延迟初始化,那么创建一个单例变得非常简单,就像Runtime
所见。
最后,你可以找到很多关于单身模式的文章(其中一些是误导性的),但它并不能保证它。它不是 有趣,有些人认为它是一种反模式,如果你发现自己经常写自己的单身,你可能做的事情不太正确。
额外的,最后,如果你认为你需要一个懒惰的初始化单例,那么当前的标准实现是enum
。
public enum MySingleton {
INSTANCE
public String getSarcasticMessage() {
return "I'm a lazy loaded singleton, use me for everything!";
}
}
MySingleton.INSTANCE.getSarcasticMessage(); // This is how to use it