How to limit the creation of objects to no more than 3 in the Java class?

How to limit the creation of objects to no more than 3 in the Java class?

Can you give me an idea of ​​how I can do this?

+5
source share
7 answers

Turn your class through a factory (see design patterns) and limit it to 3 instances with a simple counter.

+7
source

We can limit the creation of an object to a specific class by a small modification in the Singleton design pattern, as shown below:

public class LimitClass {

    private static LimitClass limInstance;
    public static int objCount = 0;

    private LimitClass(){
        objCount++;
    }

    public static synchronized LimitClass getLimInstance(){
        if(objCount < 3 ){
            limInstance = new LimitClass();
        }
        return limInstance;
    }
}

public class LimitObjectCreationTest {

    public static void main(String[] args) {

        LimitClass obj1 = LimitClass.getLimInstance();
        LimitClass obj2 = LimitClass.getLimInstance();
        LimitClass obj3 = LimitClass.getLimInstance();
        LimitClass obj4 = LimitClass.getLimInstance();
        LimitClass obj5 = LimitClass.getLimInstance();
        LimitClass obj6 = LimitClass.getLimInstance();

        System.out.println(obj1);
        System.out.println(obj2);

        System.out.println(obj3);
        System.out.println(obj4);
        System.out.println(obj5);
        System.out.println(obj6);
      }
}

Code output above:

com.pack2.LimitClass@19821f
com.pack2.LimitClass@addbf1
com.pack2.LimitClass@42e816
com.pack2.LimitClass@42e816
com.pack2.LimitClass@42e816
com.pack2.LimitClass@42e816

After creating three different objects, he repeats the same third object again and again. It does not create another object.

+7
source

. . - OOPS ( )

+2

Factory - . . .

+1

ObjectPool Apache Commons. ...

+1

limInstance = null; getLimInstance()? obj3?

 public static synchronized InstanceClass getLimInstance()
{
        if(objCount < 3 ){
            limInstance = new InstanceClass();
        }
        else
        {
            limInstance=null;
        }
        return limInstance;
    }


public class LimitObjectCreationTest {


   public static void main(String[] args) {
    InstanceClass obj1 = InstanceClass.getLimInstance();
    InstanceClass obj2 = InstanceClass.getLimInstance();
    InstanceClass obj3 = InstanceClass.getLimInstance();
    InstanceClass obj4 = InstanceClass.getLimInstance();
    InstanceClass obj5 = InstanceClass.getLimInstance();
    InstanceClass obj6 = InstanceClass.getLimInstance();

    System.out.println(obj1);
    System.out.println(obj2);

    System.out.println(obj3);
    System.out.println(obj4);
    System.out.println(obj5);
    System.out.println(obj6);

    System.out.println(obj3);
  }

}

:

come.classinstance.InstanceClass@4a5ab2

come.classinstance.InstanceClass@1888759

come.classinstance.InstanceClass@6e1408

come.classinstance.InstanceClass@6e1408

0

You need to change the singleton and create three objects. write three methods in each method to return an object, for example, how to return different three objects and use when you need to. basically, you don’t need to declare a variable or object as static, because you always return the same object.

0
source

All Articles