Flutter -- ohne Dart geht es nicht Klassen Teil 3 Factory

Baum im Wasser
Baum im Wasser
Wer Flutter effektiv nutzen möchte, sollte sich mit objektorientierter Programmierung auskennen und damit mit dem Konzept von Klassen. Im letzten Post zum Thema Klassen haben wir den Konstruktor einer Klasse betrachtet. In diesem Post geht es um eine Variante davon, den

Factory Konstruktor


Eine Klasse, also ein Bauplan für ein Objekt, möchte man so flexibel wir möglich einsetzen können. Aber wieso überhaupt ? Flexibler Einsatz von Code bzw Programmteilen bedeutet in der Regel, auch eine geringere Programmgröße. Die Größe einer Software hat immer einen Zusammenhang mit dem Speicherverbrauch, ob das nun einen PC betrifft oder ein Smartphone. Starten wir mit einem Beispiel:


class SuperHeld {
String Name;
SuperHeld();
}
main() {
}
view raw factory1.dart hosted with ❤ by GitHub
Eine sehr einfache Klasse, mit einem Textfeld und einem Konstruktor, der nichts macht. Wenn wir dieses Beispiel nun ausbauen, könnten wir so vergehen, das wir entweder pro Superheld, denn wir verwenden möchten, eine neue Klasse erstellen oder diese einte Klasse so ausbauen, das mit Ihr verschiedene Superhelden erzeugbar sind.
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:

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}");
}
view raw factory2.dart hosted with ❤ by GitHub
Dieser Code erzeugt eine SuperHeld Objekt. Bei der Erzeugung, wird im factory Teil des Codes entschieden, was für ein Objekt wir genau erzeugen. Bei SuperHeld.superman() handelt es sich um einen named, einen benannten Konstruktor. Innerhalb von diesem werden die Klassenvariablen gesetzt.
Innerhalb von factory können wir auch andere Mechanismen als if--else benutzen, switch zum Beispiel.

Kommentare

Beliebte Posts aus diesem Blog

Dart Basic: Strings Part 1

Flutter -- Tutorial Teil 7 Form Part 1 TextFormField

Listen in Dart (2021): Part 1 List.filled List.empty und List.add