Suggerimento di progettazione richiesto per creare un plug-in di esportazione

-1

Sto provando a creare il modulo di esportazione per la nostra applicazione, questo mi sembra un po 'complesso quindi lo sto postando qui per ottenere alcune linee guida.

Nel nostro database abbiamo una lista di prodotti, che possono essere esportati come XML, RTF o PDF

L'utente può selezionare uno o più prodotti dall'elenco da esportare. Dopo aver selezionato il prodotto (i) lui / lei viene presentato con l'elenco del tipo di esportazione (XML, RTF, PDF) e un elenco di connessioni (dove inviare questo file di esportazione) come FTP, HTTP, EMail ecc i cui dettagli sono già configurati.

E questa esportazione viene utilizzata per molti utenti diversi, che hanno esigenze diverse. Ad esempio Utente1 ha bisogno solo di Descrizione, Utente2 ha bisogno Descrizione + Miniatura ecc.

Devo creare per tipo di esportazione (XML, RTF, PDF) una classe Manager? e For Connections anche una classe Manager?

E per utenti diversi dovrei creare un'interfaccia?

    
posta user160820 28.05.2013 - 11:52
fonte

1 risposta

0

In primo luogo, penso che Manager sia il termine sbagliato qui - Factory è probabilmente un concetto di bette.

Sembra che tu abbia tre variabili: formato di esportazione, colonne da esportare, dove esportare.

Ciascuno di questi è un insieme di classi tutte conformi a un'interfaccia. Una Factory sarebbe utile in ogni caso per creare la classe corretta data gli input (campi di opzione su un'interfaccia utente?). Quindi potrebbero essere dati a un'altra classe che coordina le loro azioni.

Ad esempio qualcosa come lo pseudo-codice sottostante dove Formatter , ColumnPicker e DataStore sono le interfacce che ho menzionato sopra. Un'istanza concreta di questi viene creata tramite le fabbriche in base all'input dell'utente.

class Exporter {
    Exporter(Formatter formatter, ColumnPicker picker, DataStore storage) { ... }
    exportData(ProductList products) {
       storage.store(formatter.format(products.map(picker.pickColumns)))     
    }
}
    
risposta data 08.01.2014 - 23:53
fonte