Sobes.tech
Junior — Middle

Podes dar um exemplo de implementação do padrão de método de fábrica no código?

sobes.tech IA

Resposta da IA

O padrão de método de fábrica permite criar objetos sem especificar a classe concreta do objeto a ser criado. No Flutter, isso é útil para criar widgets com lógica diferente.

Exemplo de implementação em Dart:

abstract class Button {
  void render();
}

class AndroidButton implements Button {
  @override
  void render() {
    print('Renderizar botão estilo Android');
  }
}

class IOSButton implements Button {
  @override
  void render() {
    print('Renderizar botão estilo 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;

  // Dependendo da plataforma, criar o diálogo necessário
  bool isAndroid = true;
  if (isAndroid) {
    dialog = AndroidDialog();
  } else {
    dialog = IOSDialog();
  }

  dialog.render();
}

Neste exemplo, o método de fábrica createButton permite às subclasses criar objetos de diferentes tipos de botões, e o código cliente trabalha com abstrações.