Абстрактная фабрика — это порождающий паттерн, предоставляющий интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов без указания их конкретных классов.
Основные компоненты:
- Абстрактная фабрика (Abstract Factory): Интерфейс, объявляющий набор методов для создания абстрактных продуктов.
- Конкретная фабрика (Concrete Factory): Реализация абстрактной фабрики, которая создает конкретные объекты семейства.
- Абстрактный продукт (Abstract Product): Интерфейс для типа объекта, создаваемого соответствующим методом абстрактной фабрики.
- Конкретный продукт (Concrete Product): Реализация абстрактного продукта, созданная определенной конкретной фабрикой.
- Клиент (Client): Код, использующий интерфейсы абстрактной фабрики и продуктов. Клиент не зависит от конкретных классов фабрики или продуктов.
Преимущества:
- Изоляция клиента от конкретных классов продуктов.
- Обеспечение согласованности между продуктами одного семейства.
- Упрощение замены семейств продуктов.
Недостатки:
- Добавление нового типа продукта во все фабрики может потребовать изменения.
Пример структуры:
python