Design dell'oggetto C ++

1

Sto programmando un database simile a Cassandra. Io uso C ++.

Il database semplificato memorizza i suoi dati in una o due "tabelle di memoria" e diverse "tabelle del disco", tutte memorizzate in una singola directory.

Ho una classe che si occupa della singola "tabella del disco" e di un'altra classe per la "tabella della memoria".

Ho bisogno di creare una classe che si occupi di array di "tabelle di memoria" e "tabelle di dischi".

Attualmente sto pensando di seguire:

class MultipleTable : public AbstractTable{
    // get, set, bla...
    virtual Pair *get(string key){
         for(unsigned i = 0; i < getTableCount(); ++i){
              // Do not pay attention to pointers,
              // I am working to remove them.
              AbstractTable *table = getTable(i);
              Pair *p = table->get(key);
              if (p)
                    return p;
         }
         return nullptr;
    }

    virtual AbstractTable getTable(unsigned id) = 0;
    virtual unsigned getTableCount() = 0;
}

Quindi ho intenzione di estendere questa classe e scavalcare l'esatta "memorizzazione" delle tabelle (perché potrebbero esserci due o tre diverse sottoclassi).

Tuttavia, mi chiedo se questo sia il modo migliore per farlo?

Come alternativa, potrei usare std :: vector o la mia classe di archiviazione simile a std :: vector e passarla nel c-tor.

D'altra parte, questo modo attuale "isolerà" un brutto codice per le directory di scansione e probabilmente mi darà qualche altro vantaggio in seguito con i memtables.

    
posta Nick 13.07.2015 - 10:51
fonte

0 risposte

Leggi altre domande sui tag