OPUS4 / opus4-pdf

PDF support in OPUS 4 for instance to generate cover sheets or validate files.
Other
0 stars 0 forks source link

MetadataGeneratorInterface usw. überarbeiten (Konzepte klären) #48

Closed j3nsch closed 1 year ago

j3nsch commented 1 year ago

Das Interface MetadataGeneratorInterface macht noch keinen Sinn für mich. Zum einen enthält es Funktionen, die zu einer konkreten Implementation gehören. Nicht jeder "MetadataGenerator" braucht ein TempDir.

Wir verwenden Interfaces in der Regel, um unterschiedliche Komponenten des gleichen Typs zu implementieren, z.B. unterschiedliche Methoden zur Generierung von PDFs. Diese können dezentral implementiert werden. Mit Konstanten wie

const METADATA_FORMAT_CSL_JSON = 'csl_json';

im Interface gibt es aber wieder eine zentrale Datei, die für jedes neue Format erweitert werden muss.

Mir ist auch unklar, wie das Interface sinnvoll eingesetzt werden kann, da sein Zweck ja sehr weit formuliert ist. Es sollen Metadaten in (irgend) einem bibliographischen Metadatenformat generiert werden. Das heißt eine Klasse, die das Interface verwenden will, um "unabhängig" von einer konkreten Implementation zu sein, weiß nicht was sie bekommt (oder ist doch wieder von einer konkreten implementierenden Klasse abhängig. Welche Abstraktion soll hier eigentlich erreicht werden? Was soll dadurch ermöglicht werden?

An vielen Stellen sind Interface sehr sinnvoll, aber im Augenblick habe ich das Gefühl, dass wir hier über das Ziel hinausgeschossen sind und Interfaces einfach für alle konkreten Klassen definiert wurden, einfach um Interfaces zu haben. Dazu dann noch passende Factory-Klassen und die Zahl der Dateien ist verdreifacht. Es ist aber leider nicht überall klar warum.