Sto scrivendo una carta / gioco da tavolo in Java. Dato che il gioco ha molte carte che interagiscono in modi diversi, la mia classe Player è diventata un po 'gonfia con tutti questi diversi campi utilizzati per tenere traccia dei dati di cui hanno bisogno le carte specifiche. Tuttavia, non tutte le carte vengono utilizzate in ogni gioco, quindi molti di questi campi non vengono utilizzati. Invece di avere diversi campi che probabilmente non verranno utilizzati la maggior parte del tempo, stavo pensando di scrivere una sorta di classe di una mappa di campo che potesse "creare" campi dinamicamente quando erano necessari. Se un tipo di carta richiedeva che ogni giocatore memorizzasse alcuni dati in una lista, poteva semplicemente crearne uno e memorizzarlo nella mappa del campo di quel giocatore. Potrebbe essere un po 'complicato, però: che tipi di chiavi dovrei usare? Stringhe? Solo oggetti semplici? E il tipo di dati non sarà sempre un elenco, quindi probabilmente dovrebbe essere Map<String, Object>
, e dovrei inserire cast. Le chiavi dovrebbero essere la propria classe la cui identità è basata su un nome String, ma contengono anche un campo Class<?>
, in modo che possa generare il risultato per me?
In genere mi piace questa idea, dal momento che significa che non devo scherzare con la classe Player ogni volta che creo una nuova carta, ma sembra anche abbastanza inefficiente e poco elegante. È una pessima idea?