Flutter -- ohne Dart geht es nicht Klassen Teil 3 Factory
Baum im Wasser |
Factory Konstruktor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class SuperHeld { | |
String Name; | |
SuperHeld(); | |
} | |
main() { | |
} |
Innerhalb der Klasse benötigen wir dafür:
factory Klassenname() {.................}
Das Schlüsselwort factory, gefolgt vom Klassennnamen / Konstrutkornamen und dem Funktionskörper. Innerhalb dieses Funktionskörpers wird dann entschieden, welches Objekt genau wir bekommen, wenn wir anhand der Klasse im Code ein neues Objekt erzeugen. Beispiel:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
lass SuperHeld { | |
int alter; | |
int strong; | |
factory SuperHeld(String Name){ | |
if (Name=="superman") { | |
return new SuperHeld.superman(); | |
} else if (Name=="ironman") { | |
return new SuperHeld.ironman(); | |
}else{ | |
return new SuperHeld.unbekannt(); | |
} | |
} | |
SuperHeld.superman(){ | |
strong = 10; | |
alter = 30; | |
} | |
SuperHeld.ironman(){ | |
strong = 5; | |
alter = 45; | |
} | |
SuperHeld.unbekannt(){ | |
strong = 0; | |
} | |
} | |
main() { | |
var held = new SuperHeld("ironman"); | |
print("${held.strong} , ${held.alter}"); | |
} |
Innerhalb von factory können wir auch andere Mechanismen als if--else benutzen, switch zum Beispiel.
Kommentare
Kommentar veröffentlichen