Sobes.tech
Junior — Middle

Poți oferi un exemplu de implementare a pattern-ului metodei fabricii în cod?

sobes.tech AI

Răspuns de la AI

Modelul de fabrică permite crearea de obiecte fără a specifica clasa concretă a obiectului creat. În Flutter, acest lucru este util pentru crearea de widget-uri cu logică diferită.

Exemplu de implementare în Dart:

abstract class Button {
  void render();
}

class AndroidButton implements Button {
  @override
  void render() {
    print('Redare buton stil Android');
  }
}

class IOSButton implements Button {
  @override
  void render() {
    print('Redare buton stil iOS');
  }
}

abstract class Dialog {
  Button createButton();

  void render() {
    Button button = createButton();
    button.render();
  }
}

class AndroidDialog extends Dialog {
  @override
  Button createButton() => AndroidButton();
}

class IOSDialog extends Dialog {
  @override
  Button createButton() => IOSButton();
}

void main() {
  Dialog dialog;

  // În funcție de platformă, creăm dialogul necesar
  bool isAndroid = true;
  if (isAndroid) {
    dialog = AndroidDialog();
  } else {
    dialog = IOSDialog();
  }

  dialog.render();
}

În acest exemplu, metoda de fabrică createButton permite subclasele să creeze obiecte de diferite tipuri de butoane, iar codul client lucrează cu abstracții.