Ich habe dies in meinem Unternehmen umgesetzt, indem ich eine wiederverwendbare Repository-Bibliothek erstellt habe.
Im Grunde habe ich eine Repository-Abstraktion mit Schnittstellen erstellt, die grundlegende CRUD-Operationen für ein übergebenes Objekt oder einen Satz von Objekten ausführt. Dann habe ich das mit verschiedenen Persistenzmechanismen implementiert. Die Bibliothek kann persistieren jedes Objekt zu XML, JSON, Binär oder SQL. Alle diese Repositories verwenden die gleichen Schnittstellen, so dass der gesamte Code, der mit einem Repository interagieren muss, die Schnittstellen und nicht die konkreten Implementierungen verwendet. Jede Implementierung befindet sich in einer eigenen Bibliothek, ebenso wie die Abstraktionen, so dass Sie nur die Abstraktionsbibliothek und die für Ihr Programm erforderliche Implementierung verteilen müssen.
Im Objektmodell muss nichts implementiert werden, da es generische Objekte mit Reflection behandelt (die Bibliothek ist in C# für .Net geschrieben).
Ich habe die Repositories auch für Erweiterungen offen gelassen, und in einigen Anwendungen werden die standardmäßigen Reflection-basierten Dinge durch stark typisierte Repositories ersetzt, die effizienter sind, aber immer noch auf den generischen Implementierungen basieren.
Ich hoffe, das hilft.