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.