Für ein Projekt, das wir eine Anforderung haben eine interfacedefinition zu erstellen, die alle verfügbaren Dateityp Erweiterungen zurückkehren, die unsere Komponente exportieren ...Java Struktur/Muster (n) bestimmtes Feld zurückzukehren, von Subklassen
Das Problem ist, dass Wir wollen Konfigurations-/Eigenschaftendateien vermeiden. Wir möchten unsere Konfigurations-/Eigenschaftendatei nicht bearbeiten, wenn in Zukunft ein anderer Dateityp hinzugefügt wird. Die Struktur dieses Teil unserer Komponente ist wie folgt:
public abstract class FileType {
protected String filetype;
public FileType(String filetype){
this.filetype = filetype;
}
public abstract void export(String path, Object information);
}
public class PdfExport extends FileType {
public PdfExport() {
super("pdf");
}
public void export(String path, Object information){
//pdf specific logic
}
}
Aber wie wir dies lösen, wenn eine andere Komponente der interfacedefinition ruft getExportTypes()
? (Wie erhalten wir eine Liste aller verfügbaren Dateitypen?) Unter Berücksichtigung der Anforderung, in Zukunft neue Klassen hinzuzufügen, die den abstrakten Klassendateityp erweitern (neue Dateitypen hinzufügen)?
Hat jemand Vorschläge hat, vielleicht eine andere Struktur des obigen Beispiels? Oder irgendwelche (Design), die oben genannten Thema diskutieren?
Vielen Dank im Voraus!
würde ich vorschlagen, der ENUM zu nutzen. Dann werden Sie die Liste der verfügbaren Typen einfach durch Hinzufügen eines neuen Elements zur Enumeration. – khachik
das Design ist klar, speichern Sie einfach alle Ihre Exporteure in Liste und geben Sie es zurück, wenn Sie getExportType() aufrufen. und ja, du musst deinen neuen Typ zu dieser Liste hinzufügen, wenn du einen neuen Expoter machst. –