Ho due classi diverse; a Player e a Group . Devo essere in grado di interrogare un Player a cui Group s sono registrati ( player.getGroups() ), e quali Player s sono registrati rapidamente su Group ( group.getPlayers() ). La soluzione più semplice è che ogni Player tenga un elenco di Group s su cui è registrato, e ogni Group tiene un elenco di tutti i giocatori registrati a quel gruppo.
Questo introduce alcuni problemi di integrità dei dati (come faccio a garantire che se Player fa riferimento a Group , Group fa riferimento anche a Player ) e problemi su come aggiungere un Player a a% % co_de.
Una soluzione a quest'ultimo problema è avere un singolo metodo su Group o Player :
public class Player {
// ...
public void registerToGroup(Group group) {
this.groups.add(group);
group.addPlayer(player);
}
// ...
}
Funziona, ma introduce anche alcune conseguenze secondarie della modifica del Group che passi, cosa che potresti non aspettarti. Ma forse questo è il modo migliore (e relativamente semplice) per farlo?
Quali sono le migliori pratiche per questo tipo di problemi? Preferirei non dover cercare tra le liste e filtrare un certo Group per scoprire quale Player s a cui Group è registrato, e preferirei non mescolare i database in quanto è un progetto piuttosto piccolo ma deve essere in grado di espandersi senza troppi problemi.