我想只创建一个类的一个对象并一遍又一遍地重用同一个对象。 有没有有效的方法来做到这一点。
我该怎么做?
答案 0 :(得分:10)
public final class MySingleton {
private static volatile MySingleton instance;
private MySingleton() {
// TODO: Initialize
// ...
}
/**
* Get the only instance of this class.
*
* @return the single instance.
*/
public static MySingleton getInstance() {
if (instance == null) {
synchronized (MySingleton.class) {
if (instance == null) {
instance = new MySingleton();
}
}
}
return instance;
}
}
答案 1 :(得分:2)
这通常用Singleton pattern实现,但实际需要的情况非常罕见,这不是一个无害的决定。
在做出决定之前,您应该考虑alternative solutions。
关于why static variables can be evil的另一篇文章也是一个有趣的读物(单例是一个静态变量)。
答案 2 :(得分:1)
使用一个实例创建类的最简单方法是使用enum
public enum Singleton {
INSTANCE
}
你可以将它与史蒂夫泰勒的答案进行比较,看看它比其他选择更简单。
顺便说一句:我只建议你使用无国籍单身人士。如果你想要有状态的单身,你最好使用依赖注入。答案 3 :(得分:0)
那将是Singleton pattern - 基本上你会阻止使用私有构造函数进行构造,并使用静态同步的getter“获取”实例,如果它不存在则会创建单个实例。
干杯,
答案 4 :(得分:0)
有一种名为Singleton的设计模式。如果你实施它,你将得到你需要的东西。
看看this,看看实现它的不同方法。
答案 5 :(得分:0)
是。它被称为Singleton类。您只需创建一个实例并在整个代码中使用它。
答案 6 :(得分:0)
您正在寻找Singleton pattern。阅读维基百科文章,您将找到如何用Java实现它的示例。
也许您也想了解更多有关设计模式的信息,然后我建议您阅读Erich Gamma等人的书"Head First Design Patterns"或the original Design Patterns book(前者提供Java示例,后者不)
答案 7 :(得分:0)
您要找的是Singleton Pattern。