仅为类创建一个对象并重用相同的对象

时间:2013-01-03 08:40:56

标签: java

我想只创建一个类的一个对象并一遍又一遍地重用同一个对象。 有没有有效的方法来做到这一点。

我该怎么做?

8 个答案:

答案 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