Angenommen, ich habe ein Domänenmodell und möchte es von jeder Persistenzschicht lesen und speichern. Im Moment könnte es sich um eine JSON-Datei handeln, in Zukunft könnte es sich jedoch um XML oder eine Datenbank handeln (die sich auch in ihrem Typ ändern könnte ).
Um das Domänenmodell aus der Persistenzschicht zu generieren, habe ich eine Implementierung einer einfachen Schnittstelle, die beispielsweise eine getAll()
und- saveAll()
Methode enthält. Wenn ich zu einer anderen Art von Persistenz wechseln möchte, kann ich einfach die Implementierung der Schnittstelle ändern. Innerhalb der Implementierung verwende ich jedoch völlig andere Lösungen zum Lesen und Speichern der Daten, sodass ich unterschiedliche Objekte aus anderen Bibliotheken verwenden muss, um mit den Daten umzugehen.
Angenommen, ich verwende in der ersten Implementierung einen Json-Serializer. Anschließend instanziiere ich die Instanz dieses Serializers direkt in meiner Implementierung. Dies führt dann zu meiner Implementierung direkt abhängig von diesem Serializer, ich kann ihm nie wieder einen geben. Dies wäre jedoch sowieso nicht möglich, da es keine universelle Schnittstelle für Serializer gibt (oder welche Art von Persistenz auch immer). Wenn ich also einen anderen Serializer verwenden möchte, kann ich nur eine völlig neue Implementierung schreiben, anstatt nur eine andere von außen zu übergeben.
Ist es in diesem Fall in Ordnung, Abhängigkeiten von hartem Code zu vermeiden? Oder gibt es eine bessere Option?