Паттерн "Абстрактная фабрика" (Abstract Factory) в Java — семейства совместимых клиентов
Модель и масштаб — Основы БД, опорные темы, проектирование БД, пакетная работа. Карта — о разделе.
Обзор — в порождающих паттернах. Здесь — практический Abstract Factory на Java для провайдеров уведомлений.
Play ITЗагрузка интерактивного демо…
Задача паттерна
Abstract Factory создает семейства связанных объектов без привязки клиентского кода к конкретным классам.
Если система переключается между провайдерами целиком (AWS, Firebase), фабрика гарантирует, что все созданные клиенты совместимы между собой.
Пример — уведомления по провайдерам
Код ITЗагрузка примера кода…
NotificationFactory factory = new AwsNotificationFactory();
EmailSender email = factory.createEmailSender();
SmsSender sms = factory.createSmsSender();
Клиенту не нужно знать детали AWS/Firebase классов.
Отличие от Factory Method
| Паттерн | Что создаёт |
|---|---|
| Factory Method | Один продукт |
| Abstract Factory | Семейство продуктов |
Подробнее про Factory Method — Паттерн "Фабричный метод" (Factory Method) в Java — создание через подклассы.
Когда применять и минусы
Подходит, если нужны целые наборы совместимых компонентов (драйверы БД, UI-темы, облачные SDK).
Минус: добавить новый тип продукта (например, PushSender) сложно — нужно менять интерфейс фабрики и все ее реализации.