Как ограничить создание объектов не более 3 в классе Java?Как ограничить создание объектов не более 3 в Java-классе?
Можете ли вы дать мне представление о том, как я могу это сделать?
Как ограничить создание объектов не более 3 в классе Java?Как ограничить создание объектов не более 3 в Java-классе?
Можете ли вы дать мне представление о том, как я могу это сделать?
Включите свой класс через завод (см. Шаблоны проектирования) и ограничьте его до 3-х экземпляров с помощью простого счетчика.
простой статический счетчик и имеют заводской метод синхронизации. –
Вам необходимо изменить Синглтон. См. Это - то же самое OOPS (Design Patterns)
Заводская схема - путь. Или можно использовать статический счетчик. Необходимо внимательно следить за безопасностью потока.
Вы также можете посмотреть ObjectPool Apache Commons. Исходный код находится в свободном доступе ...
Мы можем ограничить создание объекта для конкретного класса с помощью небольшой модификации в Singleton шаблон проектирования, как показано ниже:
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);
}
}
Выход выше код, как:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
После создания трех разных объектов он повторяет один и тот же третий объект снова и снова. Он не создает другой объект.
Почему бы не назначить 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);
}
}
Результат был таков:
null
нуль
нуль
Вам нужно изменить одноплодные и создать три objects.ans написать три метода в каждом методе возврат объекте вроде как возвращение различных три объектов и использовать, когда вам нужно. в основном не нужно объявлять переменную или объект как статические, так как всегда возвращать один и тот же объект.
Вы ссылаетесь на шаблон дизайна erm, tripleton? Как и в, ровно три экземпляра данного класса? –
Я не понимаю, в чем ваша проблема точно ... – romaintaz
В каком-то смысле это обычная домашняя работа/вопрос. Я много раз видел этот вопрос (почти всегда с номером 3), и я еще не вижу веских оснований для этого ограничения. –