advanced
Abstract Factory
Создавайте families связанных objects за одним interface, когда products должны оставаться compatible across themes, platforms или adapters.
Abstract Factory создаёт семейства связанных объектов — UI widgets, cloud resources, database adapters — которые должны оставаться совместимыми в рамках темы или платформы. Клиенты работают с интерфейсами factory и продуктов без знания конкретных вендоров. Используйте, когда важнее сменить весь стек целиком, чем один класс.
На интервью: отличие от Factory Method и Builder. Классика: кроссплатформенные UI kits или themed document exporters.
Типовые ошибки: over-engineering при одном вариативном продукте; factories-god-objects; утечка concrete types через return signatures.
Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.
Чеклист:
- Продукты семейства разделяют constraints совместимости.
- Клиентский код не называет concrete vendors.
- Смена семейства — изменение конфигурации.
- Держите семейство маленьким и связным.