Sobes.tech
Back to questions
Junior — Middle
127

Можешь привести пример применения паттерна 'Абстрактная фабрика' в практике разработки?

Companies where asked
AndersenAndersen

Answer from AI

sobes.tech AI

Паттерн "Абстрактная фабрика" в Flutter часто применяется для создания кроссплатформенных виджетов с разным стилем оформления под Android и iOS. Например, можно определить абстрактную фабрику, которая создает кнопки и диалоги, а конкретные фабрики будут возвращать виджеты Material для Android и Cupertino для iOS.

abstract class UIFactory {
  Widget createButton(String text, VoidCallback onPressed);
  Widget createDialog(String title, String content);
}

class MaterialFactory implements UIFactory {
  @override
  Widget createButton(String text, VoidCallback onPressed) {
    return ElevatedButton(onPressed: onPressed, child: Text(text));
  }

  @override
  Widget createDialog(String title, String content) {
    return AlertDialog(title: Text(title), content: Text(content));
  }
}

class CupertinoFactory implements UIFactory {
  @override
  Widget createButton(String text, VoidCallback onPressed) {
    return CupertinoButton(child: Text(text), onPressed: onPressed);
  }

  @override
  Widget createDialog(String title, String content) {
    return CupertinoAlertDialog(title: Text(title), content: Text(content));
  }
}

// Использование:
UIFactory factory = Platform.isIOS ? CupertinoFactory() : MaterialFactory();
Widget button = factory.createButton('Нажми меня', () { /* действие */ });

Такой подход позволяет централизованно управлять стилями и компонентами, упрощая поддержку и расширение приложения.