Ich werde versuchen das Prinzip zu erklären, wie die Datenquelle über dieses Tool angesteuert wird.
Dieses Diagramm soll versuchen die Klassenstruktur zu verdeutlichen:

IOpenDigger:
Diese Schnittstelle ist als ein extra Projekt ausgeglieder und regelt den Zugriff auf eine Datenquelle (z.B. Filesystem).
Das heißt, hier ist dieser Zugriff abstrakt dargestellt, in Form von Interfaces oder Abstract Classes.
Hier wird festgelegt wie die Daten intern als Objekt dargestellt werden und wie diese dann weitergegeben werden.
Die einzigste Implementierung ist das Default Objekt (StorageObjImpl) zur Darstellung der Daten aus der Datenquelle,
allerdings ist dies nur ein Beispielobjekt. Andere komplexere Objekte können jederzeit hinzugefügt werden, nur sollte
dabei beachtet werden, dass das IStorageObj Interface implementiert werden sollte.
IOpenDiggerImpl:
Hier werden die abstrakten Schnittstellen aus dem IOpenDigger Projekt implementiert. Das bedeutet hier wird ganz konkret
implementiert wie die Daten aus einer Datenquelle (Datenbank, Filesystem, usw..) geladen werden und z.B. in IStorageObj
überführt werden. In diesen Beispielprojekt ist dieser Teil nur ein Package, da es recht wenig zu implementieren gab. Aber
wenn die Implementierung doch umfangreicher und komplexer wird, sollte man diesen Teil als extra Projekt anlegen.
OpenDigger.Utils.DataSource
Über diese Klasse wird die konkrete Implementierung angesteuert, um bei vielen Änderungen in der Implementierung,
eine zentrale Stelle (DataSource) zu haben, die bei Bedarf angepasst werden kann. Somit entfallen Änderungen an
allen Stellen die die Implementierung ansteuern.





