Comportamento dell'oggetto o classe separata?

1

Quando si tratta di accesso al database OO, si vedono due approcci comuni: il primo consiste nel fornire una classe (ad esempio "Cliente") con metodi come Recupera (), Aggiorna (), Elimina (), ecc. L'altro è per mantenere la classe Customer abbastanza leggera (essenzialmente solo proprietà) ed eseguire l'accesso al database altrove, ad es utilizzando un repository.

Questa scelta di approcci non si applica solo all'accesso al database, ma può essere visualizzata in molti diversi scenari OOD. Quindi mi chiedevo se un modo fosse preferibile rispetto all'altro (anche se sospetto che la risposta sarà "dipende")!

Un altro dev del nostro team sostiene che per essere veramente OO la classe dovrebbe essere "autonoma", cioè fornire tutti i metodi necessari per manipolare e interagire con quell'oggetto. Personalmente preferisco l'approccio al repository - non mi piace gonfiare la classe Customer con tutte quelle funzionalità, e credo che risulti in un codice più pulito che si trova altrove, ma non posso fare a meno di pensare che sto violando seriamente i concetti di OO core! / p>

E per quanto riguarda le implicazioni della memoria? Se recupero migliaia di oggetti Cliente, suppongo che quelli con i metodi di accesso ai dati occuperanno molta più memoria rispetto agli oggetti di sola proprietà?

    
posta Andrew Stephens 16.10.2012 - 21:32
fonte

1 risposta

6

Uno dei principali principi del buon design OOP è Separazione dei dubbi .

Persistenza: il caricamento e il salvataggio dei dati oggetto sono una preoccupazione distinta per le preoccupazioni aziendali dell'oggetto, la cosa che sta modellando.

In quanto tale, i problemi di persistenza dovrebbero essere gestiti da un oggetto separato - uno schema usato spesso che hai menzionato è in effetti il pattern del repository.

    
risposta data 16.10.2012 - 21:35
fonte

Leggi altre domande sui tag