Mi sembra che questo sia spesso riscontrato nella pratica e mi stavo chiedendo se c'è un modello di progettazione per quanto segue:
Supponiamo che abbia una classe che rappresenta una carta:
public class Hand {
private static Random rng;
private Rank rank;
private Suit suit;
public Hand() {
if (prng == null)
prng = new Random();
}
//more stuff
}
}
Ogni volta che istanzia una carta, voglio una carta a caso. Facendolo sopra, si perde un confronto con null per istanziazione. Se creo un campo statico e lo alloco nella decelerazione:
private static Random rng = new Random();
un nuovo oggetto casuale viene istanziato ogni volta - anche non molto efficiente.
Se passassi l'oggetto Random nel costruttore, violerei "tell, do not ask."
Forse c'è un altro suggerimento, ma finora, penso che il modo migliore sia il controllo nullo.