Dipende davvero dal tipo (e dalla quantità / dimensione) di dati di cui stai parlando. Se si tratta di un piccolo bit di dati che può essere conservato in modo sicuro in memoria per la durata dell'esecuzione, qualcosa come una classe statica sarebbe la mia raccomandazione.
public static class Constants
{
public static int[] Levels = { 0, 100, 200, 400, 800, 1600, 3200, 6400 }
}
In questo modo, l'esperienza richiesta per arrivare al Livello X è Constatns.Levels[X - 1];
e anche l'accesso ad altri dati è facile, se hai bisogno di una raccolta di Articoli, puoi aggiungerli anche qui, se i tuoi Dati Articoli sono troppo grandi per essere archiviati in memoria, puoi implementare anche la logica di memorizzazione nella cache all'interno della classe statica.
Renderlo statico mantiene una singola copia in memoria e garantisce che tutti i client di questa classe ottengano gli stessi dati.
Mentre questo fa "accoppiare strettamente" le tue classi, l'accoppiamento stretto non è una brutta cosa se il design ne ha davvero bisogno, che nel caso delle statistiche degli oggetti e dei grafici XP, è ragionevole, IMHO, abbinarle strettamente. Cerco sempre di mantenerlo semplice, fino a quando qualcosa non lo costringe a complicarsi.