2011-01-24 13 views
6

Qual è un approccio migliore, creare prima entità figlio, quindi passare alla radice aggregata per aggiungerle o fare in modo che la radice aggregata le crei? Per esempio:Qual è il modo consigliato di aggiungere entità figlio per aggregare le radici?

Order.AddOrderLine(new OrderLine(product, quantity, ...)); 

O

Order.AddOrderLine(product, quanity, ...); 

che è un approccio migliore? Sono sicuro che questo è puramente soggettivo, ma voglio vedere quale ha più pro e contro.

+0

Perché si escludono a vicenda? –

risposta

4

Ok, quindi in fondo la mia opinione è che si dovrebbe creare un oggetto prima, perché:

  • creazione dell'oggetto stesso è una preoccupazione a parte, che può essere abbastanza complessa per la via. E se, ad esempio, il costruttore di OrderLine verrà modificato in seguito, sarà necessario modificare anche il tipo Order. Ciò è negativo, poiché è necessario modificare Order solo a causa di alcune modifiche apportate allo OrderLine. Quindi l'interfaccia del root Order non deve dipendere dallo OrderLine.

  • il secondo approccio può essere difficile da verificare se il metodo conterrà una logica aggiuntiva eccetto solo chiamando this.OrderLines.Add(orderLine);

Modifica Dopo aver discusso questo con un mio amico, mi si avvicinò con il seguente parere:

  • Ordine Root dovrebbe controllare la durata di suo figlio, perché questo sarà più chiaro per l'altra persona che utilizza questa API e wi Ridurre al minimo la possibilità di un uso inappropriato. E anche rivelerà meglio l'intento.

  • L'utilizzo di questo approccio ci consente anche di non preoccuparci di convalidare la OrderLine in arrivo, perché se siamo responsabili della creazione di OrderLine, possiamo crearla correttamente.

+1

Ora è roba utile. Non ho mai notato questo accoppiamento. –

Problemi correlati