Morgen,
ich steh grad n bissl aufm Schlauch. Folgender Code
XML-Datei
In einer Liste sind 0..n Objekte vom Typ Text- oder Optionquestion gespeichert.
Problem ist, dass ich bei jedem Zugriff auf eines dieser Objekte den genauen Typ kennen muss.
Mapping XML-Java:
Anhand des Attributewertes "type" vom question-Element wird der Typ entschiedenl.
Beispiel: Erzeugen der Objekte aus einer XML-Struktur
Und so hab ich es in fast jeder Funktion.
Z.B. bei:
- jeder JSP-Datei (da hier unterschiedliche HTML-Elemente dargestellt werden,abhängig von Attributen in der Klasse)
- jedem Ändern, Editieren, Erstellen einer Frage
u.s.w.
Beim erstellen kann ich mir Factory-Methoden erstellen, aber das löst die anderen Probleme noch lange nicht.
Wie könnt ich das machen?
In der Question-Klasse ne Methode erstellen welchen mir den HTML-Code zurückgibt könnt ich machen, ist aber absolut pfusch, deshalb lass ich es gleich
Gruß Sebastian
ich steh grad n bissl aufm Schlauch. Folgender Code
Code:
class Question{
protected String text;
//getter und setter
}
class TextQuestion extends Question{
private String answer;
//getter und setter
}
class OptionQuestion extends Question{
private String[] options;
//getter und setter
}
XML-Datei
Code:
<..>
<question type="select"...>
<text>blah</text>
<options>
<text>a</text>
<text>b</text>
</options>
</question>
<question type="text"...>
<text>blah</text>
<textfield/>
</question>
</..>
In einer Liste sind 0..n Objekte vom Typ Text- oder Optionquestion gespeichert.
Problem ist, dass ich bei jedem Zugriff auf eines dieser Objekte den genauen Typ kennen muss.
Mapping XML-Java:
Anhand des Attributewertes "type" vom question-Element wird der Typ entschiedenl.
Beispiel: Erzeugen der Objekte aus einer XML-Struktur
Code:
Question q = null;
if(type.equals("select")){
q = new OptionQuestion();
((OptionQuestion)q).setOptions(...)
} else{
q = new TextQuestion();
}
Und so hab ich es in fast jeder Funktion.
Z.B. bei:
- jeder JSP-Datei (da hier unterschiedliche HTML-Elemente dargestellt werden,abhängig von Attributen in der Klasse)
- jedem Ändern, Editieren, Erstellen einer Frage
u.s.w.
Beim erstellen kann ich mir Factory-Methoden erstellen, aber das löst die anderen Probleme noch lange nicht.
Wie könnt ich das machen?
In der Question-Klasse ne Methode erstellen welchen mir den HTML-Code zurückgibt könnt ich machen, ist aber absolut pfusch, deshalb lass ich es gleich
Gruß Sebastian