Dafür gibt es zwei Möglichkeiten:
%Vor% Chipmunk.famous1()
ist ein Umleitungskonstruktor. In diesem Fall können Sie keine Eigenschaften zuweisen. Daher muss der Konstruktor, den Sie aufrufen, alle Eigenschaften zulassen, die Sie festlegen möchten. Deshalb habe ich fame
als optionalen Parameter hinzugefügt. In diesem Fall könnten Sie name
und fame
final machen.
Chipmunk.famous2()
ist ein Factory-Konstruktor und kann nur die gewünschte Instanz erstellen. In diesem Fall könnte fame
nicht final sein (offensichtlich könnte es sein, dass Sie den fame
-Parameter im named
-Konstruktor verwendet haben).
Die erste Variante wäre wahrscheinlich die beste für Ihren Anwendungsfall.
Dies ist die Dokumentation in der Sprachspezifikation:
Ein generativer Konstruktor besteht aus einem Konstruktornamen, einer Konstruktorparameterliste und entweder einer Redirect-Klausel oder einer Initialisierungsliste und einem optionalen Body.
Hier könnte das init-Muster verwendet werden: Der Konstruktor ruft nur eine in der Klasse definierte init-Funktion auf.
Es kann in einigen Fällen einen Vorteil gegenüber dem Umleitungskonstruktor haben, ich kann jetzt an zwei denken:
- wenn Sie den Zustand Ihres Objekts speichern / wiederherstellen (in diesem Fall schreiben Sie einfach den Wiederherstellungsteil).
- wenn Sie Ihre Objekte bündeln (recyceln) und sie bei der Wiederbelebung "auffrischen" müssen.
Tags und Links constructor dart