Come limitare la creazione di oggetti a non più di 3 nella classe Java?Come limitare la creazione di oggetti a non più di 3 nella classe Java?
Puoi darmi un'idea di come posso farlo?
Come limitare la creazione di oggetti a non più di 3 nella classe Java?Come limitare la creazione di oggetti a non più di 3 nella classe Java?
Puoi darmi un'idea di come posso farlo?
Installa la tua classe tramite una fabbrica (vedi schemi di progettazione) e limitala a 3 istanze utilizzando un contatore semplice.
contatore statico semplice e il metodo di fabbrica è sincronizzato. –
È necessario Singleton modificato. Vedi questo - lo stesso OOPS (Design Patterns)
Il modello di fabbrica è la strada da percorrere. Oppure è possibile utilizzare un contatore statico. È necessario prestare attenzione alla sicurezza del filo.
Si può anche dare un'occhiata a ObjectPool di Apache Commons. Il codice sorgente è liberamente disponibile ...
possiamo limitare la creazione di oggetti per una particolare classe piccola modifica in Singleton design pattern come qui sotto:
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);
}
}
uscita di codice sopra è come:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Dopo la creazione di tre oggetti diversi, si ripete lo stesso 3 ° oggetto ancora e ancora. Non sta creando l'oggetto diverso.
perché non assegnare limInstance = null; in caso contrario in getLimInstance()? in tal caso non fornirà duplicati 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);
}
}
risultato è stato questo:
null
nullo
nullo
È necessario modificare Singleton e creare tre objects.ans scrivere tre metodo in ogni oggetto metodo di ritorno come come ritorno diverse tre oggetti e utilizzare quando necessario. l'uso principale non è necessario dichiarare variabile o oggetto come statico, poiché restituisce sempre lo stesso oggetto.
Ti riferisci a un modello di progettazione erm, tripleton? Come in, esattamente tre esempi di una determinata classe? –
Non capisco esattamente qual è il tuo problema ... – romaintaz
Sembra essere un compito comune/domanda in qualche corso. Ho visto la domanda molte, molte volte (quasi sempre con il numero 3) e devo ancora vedere una buona ragione per questa restrizione. –