Classe per elenco riepilogato di oggetti complessi

0

Supponiamo che abbia una classe che rappresenta un oggetto dominio complesso con dozzine di proprietà, come una politica pensionistica.

La GUI elenca tutte le pensioni in una tabella di riepilogo che contiene solo un piccolo sottoinsieme di tali proprietà.

L'applicazione utilizza un ORM come il framework di entità di .NET.

Quando si esegue una query sul db per popolare la tabella di riepilogo, non voglio restituire tutti i dettagli per ogni criterio.

Come dovrei gestirlo in modo che il caricamento della tabella di riepilogo effettui solo query sui campi pertinenti? Dovrei usare un oggetto separato come PensionSummary? C'è un approccio comune a questo scenario?

Grazie.

    
posta John Steed 14.09.2017 - 17:00
fonte

2 risposte

1

Vorrei utilizzare il seguente approccio:

  • Definire un'interfaccia IPensionSummary con tutte le proprietà necessarie;
  • La tua pensione principale implementa questa interfaccia e riflette i dati di DB (una tabella delle pensioni, ad esempio);
  • Nel DB, creare una vista che effettui una query solo per un piccolo sottoinsieme di pensioni e recupera un insieme di colonne riepilogato (ad esempio, vista Riassunto pensione), questa vista sarà simile a un'altra tabella, ma in realtà rifletterà i dati di altri tabelle quando interrogate;
  • Definisci una classe PensionSummary che implementa anche la sua interfaccia, e qui rifletterà la vista PensionSummary dal DB.

Se hai oggetti di dominio complessi con metodi complessi e vuoi esporre oggetti più semplici con poche proprietà e metodi più semplici, dovresti usare il modello di progettazione di Facciata, ma sembra che questo non sia il tuo caso.

    
risposta data 15.09.2017 - 04:06
fonte
0

Mi piacerebbe un PensionSummary (incluse alcune funzionalità per navigare al PensionPolicy completo).

Non creerei sicuramente PensionPolicy istanze riempite solo parzialmente. IMHO un oggetto di business dovrebbe essere in grado di rispondere a tutte le domande riguardanti quell'oggetto, indipendentemente dalle circostanze (come attualmente viene utilizzato solo per la visualizzazione in alcune tabelle). E non proverei a creare soluzioni alternative come il caricamento lento se alcune delle informazioni vuote vengono richieste da alcune chiamate.

Quindi, se davvero non vuoi fornire oggetti di PensionPolicy completi, allora deve essere un'altra classe, strettamente correlata a quella originale.

    
risposta data 14.09.2017 - 17:11
fonte