java - 如何扩展单例类以处理特定数量的对象

标签 java singleton-methods

在Java中,我创建了一个单例类,如下所示:

public class Singleton 
{   
    private Singleton() { print("Singleton Constructor"); }
    private static Singleton pointer = new Singleton();//static here so only one object 
    public static Singleton makeSingleton()
    {
        return pointer;
    }

    public static void main (String args[]) 
    {
        Singleton nuReference = Singleton.makeSingleton();
        if(nuReference == pointer)
        {
            print("Both are references for same object.");
        }
    }
}

这里,仅返回对已创建的 Singleton 类对象的引用。如何创建一个类,以便只允许创建该类的四个对象?我可以使用这个 Singleton 类来实现这个目的还是我必须从头开始制作它?

哦,print() 是我的自定义方法。与 System.out.println() 的工作方式相同,只是击键次数更少:)

最佳答案

这应该有效:

public class Singleton
{
      private Singleton()
      {
            print("Constructor");
      }

      private static Singleton instances[] = new Singleton[4];

      private static Boolean initiated = false;

      public static Singleton getInstance(int index)
      {
          tryInitiate();

          if(instances[index] == null)
          {
              instances[index] = new Singleton();
          }

          return instances[index];
      }

      private static Boolean tryInitiate()
      {
          if(initiated) return false;

          for (int i = 0; i < instances.length; i++)
          {
              instances[i] == null;
          }

          initiated = true;

          return true;
      }
}

您还可以在启动期间实例化对象,而不是使用“null”启动对象。但这样只有需要的对象才会被实例化。

关于java - 如何扩展单例类以处理特定数量的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18062483/

相关文章:

java - 如何使用 GWT 查询获取 iframe 的内容?

java - 用多个分隔符分割多项式字符串并保留分隔符? (JAVA)

node.js - 如果导出的模块函数被调用两次,则会抛出错误

java - Java中的单例设计模式和单例对象有什么区别?

ruby - def myobject.mymeth 和 class << myobject; 之间的区别定义我的方法

java - Android 应用程序创建不在 Activity 中的内部文件

java - Java中有缓冲区填充接收方法吗?

java - 获取Java EE项目中的相对路径

java - 为什么 try-with-resources 不能与字段变量一起使用?