Questa è una domanda che ho chiesto un po 'su SO, ma potrebbe essere discusso meglio qui ...
Dove lavoro, siamo andati avanti e indietro su questo argomento un numero di volte e stiamo cercando un controllo di sanità mentale. Ecco la domanda: i Business Objects devono essere contenitori di dati (più come DTO ) o devono anche contenere la logica che può eseguire alcune funzionalità su quell'oggetto.
Esempio: prendi un oggetto cliente, probabilmente contiene alcune proprietà comuni (Nome, Id, ecc.), se quell'oggetto cliente include anche funzioni (Salva, Calc, ecc.)?
Una linea di ragionamento dice separare l'oggetto dalla funzionalità (principio di responsabilità singola) e inserire la funzionalità in un livello o oggetto di Business Logic.
L'altra linea di ragionamento dice, no, se ho un oggetto cliente voglio solo chiamare Customer.Save e averlo fatto. Perché devo sapere di un'altra classe per salvare un cliente se sto consumando l'oggetto?
I nostri ultimi due progetti hanno separato gli oggetti dalla funzionalità, ma il dibattito è stato sollevato di nuovo su un nuovo progetto.
Che ha più senso e perché ??