Ich denke, ich habe eine gute Frage bezüglich der Arbeit, die ich mache. Also möchte ich ein Objekt erstellen, um den Typ eines HTML-Elements und seinen X-Pfad zu speichern. Der Code ist sehr einfach:Eine gute Implementierung für ein Objekt, das 2 oder 3 Felder haben kann, abhängig vom Typ
public class XpathObject {
private String type;
private String xpath;
public XpathObject(String type, String xpath) {
if(!type.equals("input") && !type.equals("label") && !type.equals("textarea") && !type.equals("button")) {
throw new IllegalArgumentException();
}
this.type = type;
this.xpath = xpath;
}
public String getType() {
return type;
}
public String getXpath() {
return xpath;
}
}
Die Dinge, das ist, wenn ich habe ein die „Bezeichnung“ Typ i Diese Aufgabe wollen die folgenden drei Felder haben, anstatt die 2, Typ, XPath und xpath_bis. Der naive Ansatz wäre, immer den xpath_bis zu setzen und ihn zu ingigieren, wenn ich nicht im "label" -Fall bin, aber ich finde es hässlich, ein Feld auf Null gesetzt zu haben (ich könnte falsch liegen). Wie könnte ich diesen Fall richtig umsetzen? Vielen Dank.
Erstellen einer Unterklasse 'XpathLabelObject', die das zusätzliche Feld hat, und verwenden Sie die Unterklasse im Fall Typ ist "Label". Vielleicht erstellen Sie eine Factory-Methode, um entweder eine Instanz von 'XpathObject' oder eine Instanz von' XpathLabelObject' zu erstellen, abhängig vom Wert von 'type'. – Jesper
Ja, aber wäre es nicht ein bisschen zu viel, um ein anderes Objekt in der Klasse nur für diesen kleinen Fall zu instanziieren? –
Ich zögere für die Factory-Methode, ich denke, ich werde dafür gehen, wenn keine andere Lösung finden –