Ich habe 5 verschiedene Tabellen in einer Datenbank. Ich habe eine abstrakte "Converter.java"-Klasse geschrieben, die Daten aus der Datenbank entnimmt und in eine "tree.xml"-Datei konvertiert.
Baum.xml
<?xml version="1.0" standalone="no"?>
<tree>
<declarations>
<attributeDec1 name="name" type="String"/>
</declarations>
<branch>
<attribute name="name" value="process 1"/>
<leaf>
<attribute name="name" value="process 2"/>
</leaf>
<leaf>
<attribute name="name" value="process 3"/>
</leaf>
</branch>
</tree>
Wie Sie sich denken können, bleibt die Struktur der obigen tree.xml für alle 5 Tabellen gleich. Der einzige Unterschied liegt im Wert des Attributs "value".
Um den Wert des Attributs "value" zu erhalten, muss der Konverter zunächst die Datenbank nach diesen Werten abfragen.
Es sollte also 5 verschiedene Abfragen für 5 verschiedene Tabellen geben. Anstatt also 5 verschiedene Konverter zu programmieren, habe ich eine einzige "Converter.java" erstellt, die Funktionen hat wie
- openTree()
- closeTree()
- openBranch()
- closeBranch()
- openLeaf()
- closeLeaf()
- addAttribute()
Von den oben genannten Methoden habe ich alle Methoden mit Ausnahme der addAttribute()-Methode implementiert, da die Implementierung von der Tabelle abhängig ist.
Danach habe ich 5 verschiedene Konverter programmiert, jeder für eine Tabelle und alle erweitern "Converter.java"
Ich habe ein Feld mit dem Namen "query" in der Klasse Converter.java angelegt. Da dieses Feld von allen 5 Konvertern geerbt wird, habe ich dieses Feld in den Konstruktoren dieser 5 Konverter initialisiert.
Meine Frage lautet nun wie folgt:
Q. Ich bin mir nicht sicher, ob ich die Vererbung richtig angewandt habe oder ob der obige Ansatz geändert werden sollte.
Edita:
Q2. Ich habe eine weitere Methode in der Klasse Converter.java, die das Feld "query" verwendet. Da das Feld nicht in der Klasse Converter.java initialisiert wird, ist es egal, ob ich diese Methode in alle 5 untergeordneten Konverter kopiere oder ob es in Ordnung ist, diese Methode in die übergeordnete Klasse (d.h. Converter.java) zu setzen.