Design della classe: decidi tra file e database per l'archiviazione durante il runtime [chiuso]

0

In base alla versione demo o licenza della mia applicazione, dovrei salvare data in file (xml) in una posizione specifica o in% codice%. Quale dovrebbe essere il mio approccio per questo caso rispetto a relational database ? Presumo che usare class design sia adatto in questo caso.

    
posta Rajasri.J 25.06.2018 - 06:22
fonte

2 risposte

1

Sì, usare qualcosa come il modello di strategia o adattatore sembra sensato qui.

  1. Definisci un'interfaccia (o una famiglia di interfacce) che descriva tutte le operazioni di persistenza della tua logica aziendale.

  2. Crea implementazioni di questa interfaccia per un back-end del database e il back-end del file.

  3. All'avvio dell'applicazione, utilizzare le tecniche di dipendenza dipendente per fornire l'implementazione corretta alla logica aziendale, a seconda dello stato della licenza. Questo può essere semplice come

    IRepository repo = (isTrialVersion) ? new FileRepository("data.txt")
                                        : new DatabaseRepository("connection string");
    runApplication(repo, otherConfiguration);
    

Se l'interfaccia di persistenza è più complicata e deve essere costituita da più interfacce, è possibile iniettare un oggetto di facciata o di fabbrica astratta.

Il nome esatto del pattern che usi non è importante, la parte rilevante è "usa un'interfaccia e fornisci l'implementazione corretta al runtime".

Se la versione demo e la versione completa sono distribuite come programmi separati, è possibile selezionare l'implementazione corretta al momento della compilazione utilizzando tecniche di compilazione condizionale. Questo è probabilmente eccessivo nella maggior parte dei casi, ma potrebbe essere un'opzione valida, ad es. in C ++. Nota che la compilazione condizionale complicherà i test.

Questa risposta presuppone che tu sia interessato a una soluzione elegante. È comunque facilmente fendibile. Ma non c'è una buona soluzione per evitare il cracking se dai il tuo software ad altre persone. Se ciò ti riguarda, considera la distribuzione delle parti dipendenti dalla licenza come una libreria separata (DLL) o utilizza un modello di distribuzione SaaS.

    
risposta data 25.06.2018 - 11:02
fonte
1

Stai parlando di Oggetto di accesso ai dati Modello di progettazione

Use a Data Access Object (DAO) to abstract and encapsulate all access to the data source. The DAO manages the connection with the data source to obtain and store data.

Il diagramma per l'utilizzo di DAO:

Èpossibilecreareunastrategiadiaccessoaidatiutilizzandoilmetododifabbrica:

    
risposta data 25.06.2018 - 07:12
fonte

Leggi altre domande sui tag