Diciamo che voglio creare un negozio / sistema di ordini.
Avrò un DTO Order
a cui mapperò i dati di una richiesta e i risultati del database.
L'oggetto consisterà in un numero d'ordine, un numero cliente e un elenco di articoli.
Il numero dell'ordine è piuttosto semplice, userò semplicemente un int per memorizzare il numero. Ma per quanto riguarda il cliente? Avrò anche un DTO Customer
in modo da poterlo utilizzare all'interno del DTO Order
invece di salvare il numero cliente come int.
Nel mio caso il numero cliente è composto da un negozio_no (il negozio in cui è registrato il cliente) e da un cliente_no (numero interno del cliente).
Per me sembra essere più pulito avere una struttura simile a questa:
Order {
int order_no;
Customer cust;
}
Customer {
int store_no;
int cust_no;
}
invece di questo:
Order {
int order_no;
int store_no;
int cust_no;
}
Customer {
int store_no;
int cust_no;
}
Il mio problema:
Il Customer
DTO avrà molte più informazioni rispetto al solo numero cliente. Come un nome, cognome, indirizzo, nome utente, alcune bandiere e così via. Cose a cui non mi importa quando voglio salvare un ordine con order_no 123 per il cliente con store_no 12 cust_no 543.
Quindi, in questo caso, utilizzare il Customer
DTO all'interno del Order
DTO sembra essere "troppo".
Lo stesso vale per gli articoli.
Esistono buone pratiche su come creare tali DTO? Incapsulare DTO o ripetere le stesse informazioni in diversi DTO?