Wie wäre es, für jede Storage-Engine eigene Reader/Writer-Klassen zu erstellen, z.B.
TSQLNotizReader, TSQLNotizWriter
TXMLNotizReader, TXMLNotizWriter
TBinaryNotizReader, TBinaryNotizWriter
...
Vorteil: Skalierbar, denn egal wie viele neue Datenklassen, oder Storageengines du hast, keine vorhandene Reader/Writer-Klasse muss deshalb angefasst werden.
Du kannst dann mit einer Classfactory sehr elegant deine Daten lesen und speichern, denn die Schnittstelle vom Reader/Writer ist ja immer gleich. Heute nimmst Du eine
DB, morgen
XML, übermorgen Firebird, und nächste Woche mal Oracle.
Oh, NoSQL ist gerade in => na und?