Abbiamo un insieme di:
- entità:
Poll
(che rappresenta una domanda) - due o più oggetti valore
Choice
L'aggiunta di scelte avviene tramite Poll
, il repository memorizza solo l'aggregato, cioè tutto viene eseguito come previsto.
Ora, ho bisogno di selezionare il Choice
specifico scelto dall'utente. Dall'interfaccia utente avrò solo il choiceId
della scelta selezionata. Quindi il mio metodo Poll.voteForChoice()
sarà:
-
voteForChoice(choiceId)
- dove passo l'id di scelta alla radice aggregata, quindi itera le sue scelte e trova la scelta target in modo da incrementare il conteggio. Tuttavia, stiamo usando l'ID qui per la scelta, e la scelta è l'oggetto valore. -
voteForChoice(Choice)
- dove stiamo inviando l'oggetto valore completo, ovvero ho bisogno di crearlo prima di votare. Ciò significa anche che avrò bisogno di avere un Repo per le scelte, e sono oggetti di valore, così che si scontri con tutto ciò che ho imparato;) - o dovrebbe essere:
Poll.getChoice(choiceId).vote()
. - oppure
Choice
è in realtà un'entità, quindi dovremmo utilizzare Repository per recuperare la scelta:ChoiceRepo.find(id).vote()
.
Caso semplice, ma qual è la risposta corretta nel mondo DDD?