Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I restrict object creation not more than 3 in Java class?

How do I restrict object creation not more than 3 in Java class?

Can you give me an idea of how I can to do it?

like image 265
user284211 Avatar asked Mar 02 '10 08:03

user284211


3 Answers

We can restrict the creation of Object for a particular class by little modification in Singleton design pattern as 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);
      }
}

Output of above code is like:

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 creation of three different object it is repeating the same 3rd object again and again. It is not creating the different object.

like image 151
Sanjeev Kamal Avatar answered Nov 14 '22 21:11

Sanjeev Kamal


Instanciate your class via a factory (see design patterns) and limit it to 3 instances using a simple counter.

like image 31
dagnelies Avatar answered Nov 14 '22 23:11

dagnelies


You need Modified Singleton. See this - same OOPS (Design Patterns)

like image 22
Padmarag Avatar answered Nov 14 '22 21:11

Padmarag