Domanda

Sto creando una classe Factory che costruirà e restituirà un oggetto. Normalmente farei tutte le cose di dati al livello di accesso ai dati, ma non credo di poter raggiungere il mio obiettivo e ancora farlo. Quello che voglio fare è utilizzare un SQLDataReader per leggere rapidamente le informazioni sui dati e popolare l'oggetto da restituire dalla fabbrica. È un'idea stupida? C'è un approccio migliore? Preferirei non restituire un DataSet dal DAL, se possibile, o è una questione di prestazioni rispetto alla manutenibilità?

È stato utile?

Soluzione

Nella maggior parte dei casi questa è una buona idea in quanto offre due vantaggi principali:

  1. In questo modo è possibile separare l'accesso ai dati e la logica aziendale, il che significa che se si modifica la progettazione del database non è necessario modificare gli algoritmi del livello superiore.

  2. Dal punto di vista di OO, stai convertendo alcuni dati puri in oggetti e potresti anche aggiungere un comportamento agli oggetti, il che rende il codice più facile da mantenere e riutilizzabile.

Altri suggerimenti

Se sei sicuro di utilizzare tutti i dati caricati da SQLDataReader, quindi sì, potresti farlo al momento della costruzione in fabbrica. Tuttavia, se il set di dati ha molti campi, di cui verrà utilizzata solo una minoranza, il caricamento della domanda al momento della chiamata degli accessor sarebbe un migliore utilizzo delle risorse.

Detto questo, ti suggerisco di caricarlo in fabbrica quando hai tutti i 'pezzi' a portata di mano, e se non è esattamente giusto, saprai cosa deve essere riparato. Inizia sempre con la cosa più semplice che potrebbe funzionare.

Direi che dipende dall'uso previsto della fabbrica. Se questo è un factory sul tuo livello di accesso ai dati, che verrà utilizzato per popolare gli oggetti business con i dati del database, allora sì, questo è il posto giusto per farlo. (Il modello IRepository è qualcosa come questo ... una specie di).

Se la tua fabbrica non è destinata a vivere vicino al tuo codice di accesso ai dati, li terrei separati. Ricorda il Principio di responsabilità unico : gli oggetti dovrebbero avere solo un motivo per cambiare. Se la fabbrica sta semplicemente popolando oggetti con dati, questo è un uso appropriato, tuttavia se sta popolando oggetti con dati oltre a fare altre cose, allora è meglio non aggiungere roba di dati.

Ci sono compromessi in qualunque modo tu vada, quindi generalmente mi piace mantenere gli oggetti il ??più semplice possibile il più a lungo possibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top