Hi,
ich habe ein Design-Problem in Go: Ich hätte gerne ein Struct (vergleichbar mit einer Unterklasse), welches die Attribute eines Structs, das es anynom einbindet (Komposition; vergleichbar mit Oberklasse), immer mit bestimmten Werten füllt.
Java-Beispiel:
Zum Erstellen eines
Prinzipiell wäre das ein Fall für ein statisches Attribut, aber in Go geht das ja nicht. Das heißt, ich müsste diesen festen Wert in der Factory-Funktion (wie hier im Konstruktor) setzen. Das ist meiner Meinung nach aus designtechnischer Sicht auch in Ordnung so.
Nur wie setze ich diese Anforderung in Go am besten um? Mein Ansatz hätte so ausgesehen:
Ich komme noch nicht ganz dahinter.
Danke im Voraus!
ich habe ein Design-Problem in Go: Ich hätte gerne ein Struct (vergleichbar mit einer Unterklasse), welches die Attribute eines Structs, das es anynom einbindet (Komposition; vergleichbar mit Oberklasse), immer mit bestimmten Werten füllt.
Java-Beispiel:
Java:
public class Fahrzeug {
private String kennzeichen;
private int maxGeschwindigkeit;
public Fahrzeug(String kennzeichen, int maxGeschwindigkeit) {
this.kennzeichen = kennzeichen;
this.maxGeschwindigkeit = maxGeschwindigkeit;
}
}
Java:
public class Pkw extends Fahrzeug {
public Pkw(String kennzeichen) {
super(kennzeichen, 180); //Fester Wert wird gesetzt
}
}
Pkw
-Objekts gibt man einfach das Kennzeichen an, maxGeschwindigkeit
hat dann immer den selben Wert.Prinzipiell wäre das ein Fall für ein statisches Attribut, aber in Go geht das ja nicht. Das heißt, ich müsste diesen festen Wert in der Factory-Funktion (wie hier im Konstruktor) setzen. Das ist meiner Meinung nach aus designtechnischer Sicht auch in Ordnung so.
Nur wie setze ich diese Anforderung in Go am besten um? Mein Ansatz hätte so ausgesehen:
Code:
type Fahrzeug struct {
kennzeichen string
maxGeschwindigkeit int
}
func CreateFahrzeug(kennzeichen string, maxGeschwindigkeit int) *Fahrzeug {
return &Fahrzeug{kennzeichen, maxGeschwindigkeit}
}
type Pkw struct {
Fahrzeug
}
func CreatePkw(kennzeichen string) *Pkw {
//Wie kann ich hier Werte für meinen Fahrzeug-Member setzen?
}
CreateFahrzeug()
in der Funktion CreatePkw()
aufzurufen wäre natürlich Blödsinn und würde vom Typ her nicht passen, aber was müsste ich an dieser Stelle machen, um an das gleiche Ergebnis wie beim Java-Beispiel zu kommen?Ich komme noch nicht ganz dahinter.
Danke im Voraus!