Ich habe zwei Objekte, die eine 'Bar / Club' darstellen (ein Ort, an dem Sie trinken / Kontakte knüpfen).
In einem Szenario benötige ich den Balkennamen, die Adresse, die Entfernung und den Slogon
In einem anderen Szenario benötige ich den Balkennamen, die Adresse, die Website-URL und das Logo
Ich habe also zwei Objekte, die dasselbe darstellen, aber unterschiedliche Felder haben.
Ich verwende gerne unveränderliche Objekte, daher werden alle Felder vom Konstruktor festgelegt .
Eine Möglichkeit besteht darin, zwei Konstruktoren zu haben und die anderen Felder auf Null zu setzen, dh:
class Bar {
private final String name;
private final Distance distance;
private final Url url;
public Bar(String name, Distance distance){
this.name = name;
this.distance = distance;
this.url = null;
}
public Bar(String name, Url url){
this.name = name;
this.distance = null;
this.url = url;
}
// getters
}
Ich mag das nicht, da Sie null überprüfen müssten, wenn Sie die Getter verwenden
In meinem realen Beispiel hat das erste Szenario 3 Felder und das zweite Szenario ungefähr 10, also wäre es ein echtes Problem, zwei Konstruktoren zu haben , die Anzahl der Felder, die ich als null deklarieren müsste, und wenn das Objekt verwendet wird, würden Sie es nicht tun. Ich weiß nicht, welche Bar
Sie wo verwenden und welche Felder null wären und welche nicht.
Welche anderen Optionen habe ich?
Zwei Klassen genannt BarPreview
und Bar
?
Irgendeine Art von Vererbung / Schnittstelle?
Noch etwas, das großartig ist?
You should only ask practical, answerable questions based on actual problems that you face.
Und genau das passiert hier
Bar
als Kennung gefunden!