Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от AI

Моделът "Абстрактна фабрика" е създаващ шаблон за дизайн, който предоставя интерфейс за създаване на семейства от свързани или зависими обекти, без да се уточняват техните конкретни класове.

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

Пример за използване във Flutter: Да предположим, че имаме различни теми за оформление с набор от widget-и (бутон, поле за текст). Абстрактната фабрика създава интерфейс за създаване на тези widget-и, а конкретните фабрики ги реализират за светла и тъмна тема.

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
}

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