Dart Academy · Lezione

Costruttori factory e const

Memorizzare nella cache, restituire sottotipi o creare oggetti a tempo di compilazione.

Lezione 4 di 413 passaggi

Costruttori factory e const è una lezione Dart Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Dart Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Dart Academy include 4 lezioni in totale.

Che cos'è un costruttore factory

Un costruttore factory ha l'aspetto di uno normale, ma consente di controllare che cosa restituisce; quindi non deve necessariamente creare ogni volta un oggetto completamente nuovo.

class Logger {
  factory Logger() => _shared;
}

factory può restituire un oggetto memorizzato nella cache

Poiché restituisce un oggetto invece di crearne sempre uno, una factory può fornire un'istanza cached, perfetta per singleton o pool.

class Logger {
  static final _it = Logger._();
  Logger._();
  factory Logger() => _it;
}

factory può restituire un sottotipo

Una factory può restituire qualsiasi oggetto del tipo corretto, inclusa una subclass, consentendo di scegliere la classe concreta in fase di esecuzione.

factory Shape(String k) =>
    k == "box" ? Box() : Dot();

factory deve restituire un valore

A differenza di un costruttore normale, una factory ha un corpo che deve return un'istanza; non assegna mai direttamente i campi con this.

factory User.fromJson(Map j) {
  return User(j["name"]);
}

Una factory comune per il parsing

Il pattern factory è ideale per il parsing, ad esempio per creare un oggetto da una mappa. L'idioma fromJson è molto diffuso in Dart e Flutter.

factory User.fromJson(Map<String, dynamic> j) =>
    User(j["name"]);

Che cos'è un costruttore const

Un costruttore const consente di creare oggetti costanti in fase di compilazione, i cui campi sono tutti final e noti in anticipo.

class Point {
  final int x, y;
  const Point(this.x, this.y);
}

Creare istanze const

Chiamalo con la parola chiave const per creare un oggetto immutabile. Due oggetti const con valori uguali sono esattamente la stessa istanza.

const a = Point(1, 2);
const b = Point(1, 2);
print(identical(a, b)); // true

Regole per i costruttori const

Ogni campo deve essere final e il corpo del costruttore deve essere vuoto. Queste regole permettono a Dart di congelare l'oggetto in fase di compilazione.

class Color {
  final int v;
  const Color(this.v);
}

const risparmia memoria

Gli oggetti const identici vengono canonicalized in un'unica istanza condivisa, quindi riutilizzarli non comporta alcun costo aggiuntivo in memoria.

const reds = [Color(255), Color(255)];

factory e const a confronto

Scegli factory quando devi decidere in fase di esecuzione che cosa restituire; scegli const quando vuoi valori immutabili noti in fase di compilazione.

Combinare le idee

Una classe può offrire un costruttore normale, una factory per il parsing e un costruttore const per i valori fissi, coprendo ogni esigenza di creation.

Controllo rapido

Controllo rapido sui costruttori factory.

Riepilogo: factory e const

Hai imparato che i costruttori factory controllano ciò che restituiscono, mentre i costruttori const creano oggetti condivisi e immutabili in fase di compilazione. Ottimo lavoro! 🎉

Gratis per iniziare

Impara Dart con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «Costruttori factory e const» è gratuita?

Sì — il testo completo di «Costruttori factory e const» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Dart Academy, passa a CoddyKit PRO. Il corso Dart Academy include 4 lezioni in totale.

Cosa imparerò in «Costruttori factory e const»?

Memorizzare nella cache, restituire sottotipi o creare oggetti a tempo di compilazione. Eserciti Dart Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Dart Academy?

Non è richiesta alcuna esperienza precedente. Dart Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Costruttori factory e const»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Dart Academy?

Sì. Ogni lezione Dart Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Costruttori predefiniti e parametrizzati
  2. Costruttori denominati per un intento chiaro
  3. Liste di inizializzazione e reindirizzamento
  4. Costruttori factory e const
← Torna a Dart Academy