Sobes.tech
Back to questions
Junior — Middle
82

Можешь привести пример реализации паттерна фабричного метода в коде?

Companies where asked
AndersenAndersen

Answer from AI

sobes.tech AI

Паттерн фабричного метода позволяет создавать объекты, не указывая конкретный класс создаваемого объекта. В Flutter это удобно для создания виджетов с разной логикой.

Пример реализации на Dart:

abstract class Button {
  void render();
}

class AndroidButton implements Button {
  @override
  void render() {
    print('Render Android style button');
  }
}

class IOSButton implements Button {
  @override
  void render() {
    print('Render iOS style button');
  }
}

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;

  // В зависимости от платформы создаём нужный диалог
  bool isAndroid = true;
  if (isAndroid) {
    dialog = AndroidDialog();
  } else {
    dialog = IOSDialog();
  }

  dialog.render();
}

В этом примере фабричный метод createButton позволяет подклассам создавать объекты кнопок разных типов, а клиентский код работает с абстракциями.