Sobes.tech
Back to questions
Junior — Middle
120

Объясните концепцию паттерна 'Абстрактная фабрика' и как он используется в проектировании программных систем.

Companies where asked
AndersenAndersen
Pashapay
Верме

Answer from AI

sobes.tech AI

Паттерн "Абстрактная фабрика" (Abstract Factory) — это порождающий паттерн проектирования, который предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов без указания их конкретных классов.

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

Пример использования в Flutter: Предположим, у нас есть разные темы оформления с набором виджетов (кнопки, поля ввода). Абстрактная фабрика создаёт интерфейс для создания этих виджетов, а конкретные фабрики реализуют их для светлой и тёмной темы.

abstract class WidgetFactory {
  Button createButton();
  TextField createTextField();
}

class LightThemeFactory implements WidgetFactory {
  @override
  Button createButton() => LightButton();

  @override
  TextField createTextField() => LightTextField();
}

class DarkThemeFactory implements WidgetFactory {
  @override
  Button createButton() => DarkButton();

  @override
  TextField createTextField() => DarkTextField();
}

// Клиентский код
void buildUI(WidgetFactory factory) {
  var button = factory.createButton();
  var textField = factory.createTextField();
  // Используем button и textField
}

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