Обяснете концепцията на патърна 'Абстрактна фабрика' и как се използва при проектирането на софтуерни системи.
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
}
Този подход улеснява поддръжката и разширяването на кода, като позволява лесно добавяне на нови семейства от продукти.