2016-08-06 84 views
0

Eine Anwendung verwendet mehrere Arten von Daten, die als Objekte codiert sind. Diese Objekte müssen persistent sein, und das Speicher-Backend kann sich ändern (Dateisystem, sqlite, nedb sind wahrscheinlich Optionen).Entwurf für persistente Objekte mit entkoppeltem Speicher

Was ist der beste Weg, um den zugehörigen Code zu entwerfen, um den Aufwand für den Speicherwechsel zu minimieren? Ein bestimmtes Store-Objekt, an das ich meine Objekte weitergeben würde? Haben meine Objekte von denen geerbt? Sollte mein Objekt "selbst speichern" oder nicht?

Zur Information, der praktische Fall ist für eine lokale Webapp mit Node-Webkit (Javascript), aber die Antwort sollte wahrscheinlich nicht sprachabhängig sein, solange es objektorientiert ist.

+1

imo, Die Objekte sollten nicht "selbst speichern", da dies eine zusätzliche Kopplungsschicht ist, die alle Objekte benötigen - sogar temporäre. Imo, Das Repository-Muster ist dafür nützlich. Es entkoppelt das Objekt vom eigentlichen Geschäft. Wenn es über Schnittstellen definiert wird, kann es sehr flexibel sein, besonders beim Testen usw. –

+0

look @ Data Mapper – jeremy

Antwort

0

Wenn Sie eine Funktionalität haben, die sich ändern kann, abstrahieren Sie sie, indem Sie eine Schnittstelle einführen und eine Implementierung bereitstellen. In Ihrem speziellen Beispiel können Sie eine Schnittstelle definieren IRepository, die create/read/update/delete-Methoden zum Manipulieren Ihrer Objekte haben würde. Anschließend können Sie Implementierungen bereitstellen, die mit einem bestimmten Speicher arbeiten. In Ihren Komponententests können Sie beispielsweise eine speicherbasierte Implementierung verwenden, die nicht einmal mit Dateien/DBs/etc arbeitet, sondern Daten in Listen speichert.