Questo dipende, in parte, da quale pezzo di codice è responsabile per controllare chi è il giocatore corrente. È CurrentGame o il codice che usa CurrentGame ("il chiamante")?
Se CurrentGame è responsabile per l'impostazione del prossimo giocatore dopo che il turno di CurrentPlayer è finito, allora l'esposizione di SetCurrentPlayer darebbe al chiamante un modo per interferire con lo stato di CurrentGame . Ad esempio, se il giocatore A termina il proprio turno, CurrentGame imposterà CurrentPlayer su Giocatore B; tuttavia, il chiamante potrebbe utilizzare questo metodo per impostare CurrentPlayer sul giocatore A prima che il turno del giocatore B sia terminato.
Se il chiamante è responsabile:
La tua prima opzione sarebbe praticabile, sebbene il chiamante potrebbe essere eccessivamente dipendente dall'utilizzo di una proprietà di CurrentGame per ricordare chi stava giocando l'ultima partita.
Se CurrentGame è responsabile:
Considera un approccio diverso, ad esempio:
CurrentGame.SetPlayers(OrderedList<Player>)
Il chiamante passerebbe nell'elenco dei giocatori che è ordinato in base alla sequenza dei loro turni. CurrentGame avrebbe quindi impostato CurrentPlayer sul primo giocatore nell'elenco quando il gioco inizia.