Ho qualche dubbio con Agreggate Roots e con le Entità.
Immagina di avere un oggetto Box, che contiene patate. In questo caso e in un punto di vista DDD, l'Aggregate Root sarebbe l'oggetto Box, quindi nel caso in cui vogliamo aggiungere patate al Box, dobbiamo farlo attraverso l'oggetto box.
Ora, immagina di dover cambiare una specifica Patata in un'altra Scatola. Questo è, abbiamo Box A (con Potato A) e Box B. Vogliamo spostare la Patata A nel Box B.
La mia prima idea è di creare un metodo all'interno dell'oggetto Box, che cambi la radice "Potato" (perché non possiamo farlo dalla stessa Patata). Tutta la logica è nell'oggetto root, quindi sembra Ok per me.
È un buon approccio farlo in questo modo? O nel caso in cui siano coinvolte due radici aggregate (dello stesso tipo), dobbiamo creare un servizio invece?
Alcuni codici
public class Box {
private List<Potato> potatoes;
public void changeBox(Potato potato) {
potato.getBox().potatoes.remove(potato);
potato.setBox(this);
}
...
}
public class Potato {
private Box box;
protected void setBox(Box box) {
this.box = box;
}
public Box getBox(){
return box;
}
...
}
// This should do the change of box
Potato potato = oldBox.getTopPotato();
newBox.changeBox(potato);
Grazie !!