Miglior pattern per creazione di cartelle della tombola

di il
1 risposte

Miglior pattern per creazione di cartelle della tombola

Buongiorno,
provo a condividere con voi un dubbio di design di un gruppo di classi/oggetti che sto realizzando in Java.
Sto scrivendo infatti un programmino per creare cartelle della tombola e poi realizzare funzionalità di supporto al gioco quando a giocare sono tanti giocatori.

Il mio problema riguarda la scelta del pattern da utilizzare per gestire la creazione delle cartelle.
Ho infatti una classe Cartella le cui istanze rappresentano, appunto, le cartelle ciascuna con 15 numeri per il gioco.

Ho poi un algoritmo che "genera" i numeri per sei cartelle alla volta, utilizzando tutti i 90 numeri disponibili (genera una "serie" di cartelle).

Avrebbe senso quindi evitare che i programmi clienti di questi oggetti possano creare una singola cartella con una istruzione del tipo:

Cartella cart = new Cartella();

Quindi la domanda è: come costruire oggetti di tipo cartelle?
Ad oggi mi son venute due idee:

La prima:

Uso un metodo public statico nella classe Cartella che restituisce un array di sei cartelle. Una cosa del tipo

Cartella[] cartelle = Cartella.generaSeiCartelle();

In questo modo posso rendere "private" tutti i costruttori di Cartella.

La seconda strada:
usare una classe esterna che faccia da Factory per le cartelle

FactoryCartelle fc = new FactoryCartelle();
Cartella card[] = fc.generaSeiCartelle().

A me piace più questa seconda scelta, perché se in futuro mi vengon in mente nuovi algoritmi per generare cartelle o altro non modifico la classe Cartella ma una esterna.
Però così facendo mi servono comunque dei costruttori di Cartella (ad esempio Cartella(int[] numeri) che devono essere accessibili da FactoryCartelle() e che però potenzialmente, se usati male da "altri", possono lasciare in giro oggetti di tipo Cartella in stato inconsistente.

Qualche idea/suggerimento?
quale potrebbe essere un pattern pulito?
Lo chiedo anche al di là del problema specifico (che problema non è) ma più che altro per imparare stili giusti...

Grazie, Harry.

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte