Dart Academy · Lekcja

Konstruktory factory i const

Buforowanie, zwracanie podtypów lub tworzenie obiektów w czasie kompilacji

Lekcja 4 z 413 kroki

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)); // true

Zasady 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! 🎉

Bezpłatny start

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

  1. Konstruktory domyślne i parametryzowane
  2. Nazwane konstruktory dla jasnej intencji
  3. Listy inicjalizujące i przekierowywanie
  4. Konstruktory factory i const
← Powrót do Dart Academy