java - 使用工厂方法实现单例

标签 java singleton

我正在尝试使用静态工厂方法创建一个具有单例属性的类..

package ishan.Beans;

public class ControlManager {

    private static ControlManager controlManager=null;

    private  double id;

    private ControlManager()
    {
        this.id=Math.random();
    }

    public static ControlManager getControlManager()
    {

        if(null==controlManager)
            return new ControlManager();

        return controlManager;
    }

    public double getId() {
        return id;
    }

}


package ishan.Beans;

public class Usage {

    public static void main(String a[])
    {
        ControlManager cManager=ControlManager.getControlManager();

        ControlManager c=ControlManager.getControlManager();

        System.out.println(c);
        System.out.println(cManager);
    }

}

每次运行此代码时,我都会在 c 和 cManager 中获得不同的 ControlManager 实例。我无法弄清楚问题所在或我做错了什么。

最佳答案

您没有保存您创建的新实例...您的代码是:

public static ControlManager getControlManager()
{

    if(null==controlManager)
        return new ControlManager();

但应该是:

public static ControlManager getControlManager() {

    if(controlManager == null) {
        controlManager = new ControlManager();
        return controlManager;
    }

关于java - 使用工厂方法实现单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26140874/

相关文章:

java - 包含同步块(synchronized block)的实例是否必须是单例?

c# - 为什么选择静态类而不是单例实现?

C++ 设计模式 - 仅限成员类

java - Mockito - 与模拟零交互 - Singleton

java - 在java中替换文本文件的内容

java - Lucene:升级旧项目

java - 我如何在 android studio 中模糊我的 textview 的背景

java - 我如何使用条件登录并将列表转换为 JSON 格式

swift - 使用 Swift 单例

c# - 单例设计模式中的静态构造函数