Sto creando un meccanismo di serializzazione / deserializzazione dei dati essenzialmente per un oggetto di archiviazione persistente. A causa della varietà di sistemi su cui questo meccanismo può essere eseguito, ci deve essere un numero variabile di "driver" che potrebbero essere utilizzati per serializzare o deserializzare i dati.
Ho difficoltà a capire il livello appropriato di astrazione per questo sistema. In primo luogo, quando costruisco un "driver", dovrebbe avere un riferimento all'oggetto che sto memorizzando, o questo oggetto deve essere passato alle varie funzioni di scrittura?
Quindi, supponiamo di avere un po 'di DataAccessLayer che avvolge il mio DataAccessDriver . Il mio DataAccessLayer contiene necessariamente un riferimento a qualche DataObject che avvolge e utilizza DataAccessDriver per mantenere effettivamente una rappresentazione serializzata di DataObject .
La domanda è, se la DataAccessDriver è costruita con un riferimento al DataObject , o dovrei passare in DataObject per ogni chiamata di funzione che DataAccessDriver fa?