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.
  • Смена семейства — изменение конфигурации.
  • Держите семейство маленьким и связным.