Konstruktory factory i const
Buforowanie, zwracanie podtypów lub tworzenie obiektów w czasie kompilacji
Konstruktory factory i const to bezpłatna lekcja Dart Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Dart Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Dart Academy zawiera 4 lekcji w sumie.
Czym jest konstruktor factory
Konstruktor factory wygląda jak zwykły konstruktor, ale pozwala kontrolować zwracaną wartość, więc nie musi za każdym razem tworzyć zupełnie nowego obiektu.
class Logger {
factory Logger() => _shared;
}factory może zwrócić obiekt z pamięci podręcznej
Ponieważ zwraca obiekt, zamiast zawsze go tworzyć, factory może zwrócić instancję z pamięci podręcznej — idealne rozwiązanie dla singletonów lub pul obiektów.
class Logger {
static final _it = Logger._();
Logger._();
factory Logger() => _it;
}factory może zwrócić podtyp
Factory może zwrócić dowolny obiekt właściwego typu, w tym podklasę, pozwalając wybrać konkretną klasę w czasie działania programu.
factory Shape(String k) =>
k == "box" ? Box() : Dot();factory musi zwracać wartość
W przeciwieństwie do zwykłego konstruktora factory ma treść, która musi zwracać instancję; nigdy nie ustawia bezpośrednio pól za pomocą this.
factory User.fromJson(Map j) {
return User(j["name"]);
}Popularny factory do parsowania
Wzorzec factory świetnie sprawdza się przy parsowaniu, na przykład podczas tworzenia obiektu z mapy. Idiom fromJson jest powszechnie używany w Dart i Flutter.
factory User.fromJson(Map<String, dynamic> j) =>
User(j["name"]);Czym jest konstruktor const
Konstruktor const pozwala tworzyć stałe obiekty znane w czasie kompilacji, których wszystkie pola są final i których wartości są znane z wyprzedzeniem.
class Point {
final int x, y;
const Point(this.x, this.y);
}Tworzenie instancji const
Wywołaj konstruktor ze słowem kluczowym const, aby utworzyć niezmienny obiekt. Dwa obiekty const o równych wartościach są dokładnie tą samą instancją.
const a = Point(1, 2);
const b = Point(1, 2);
print(identical(a, b)); // trueZasady konstruktorów const
Każde pole musi być final, a treść konstruktora musi być pusta. Dzięki tym zasadom Dart może zamrozić obiekt w czasie kompilacji.
class Color {
final int v;
const Color(this.v);
}const oszczędza pamięć
Identyczne obiekty const są kanonizowane do jednej współdzielonej instancji, więc ich ponowne użycie nie wymaga dodatkowej pamięci.
const reds = [Color(255), Color(255)];factory a const — szybkie porównanie
Wybierz factory, gdy chcesz decydować o zwracanej wartości w czasie działania programu; wybierz const, gdy potrzebujesz niezmiennych wartości znanych w czasie kompilacji.
Łączenie pomysłów
Klasa może udostępniać zwykły konstruktor, factory do parsowania oraz konstruktor const dla stałych wartości, zaspokajając każdą potrzebę tworzenia obiektów.
Szybkie sprawdzenie
Szybkie sprawdzenie dotyczące konstruktorów factory.
Podsumowanie: factory i const
Dowiedziałeś się, że konstruktory factory kontrolują zwracaną wartość, a konstruktory const tworzą współdzielone, niezmienne obiekty znane w czasie kompilacji. Świetna praca! 🎉
Ucz się Dart dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „Konstruktory factory i const” jest bezpłatna?
Tak — pełny tekst „Konstruktory factory i const” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Dart Academy, przejdź na CoddyKit PRO. Kurs Dart Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Konstruktory factory i const”?
Buforowanie, zwracanie podtypów lub tworzenie obiektów w czasie kompilacji Ćwiczysz Dart Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Dart Academy?
Nie wymagamy żadnego doświadczenia. Dart Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Konstruktory factory i const”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Dart Academy?
Tak. Każda lekcja Dart Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Konstruktory domyślne i parametryzowane
- Nazwane konstruktory dla jasnej intencji
- Listy inicjalizujące i przekierowywanie
- Konstruktory factory i const