Абстрактная фабрика — это порождающий паттерн, предоставляющий интерфейс для создания семейств связанных или зависимых объектов без указания их конкретных классов. Думайте о нём как о фабрике фабрик — вы выбираете фабрику, и все создаваемые через неё объекты гарантированно совместимы друг с другом.
Проблема: семейства UI-компонентов
Вы разрабатываете кроссплатформенный UI-тулкит. У вас есть виджеты Button и Checkbox. Каждая платформа (Windows, macOS, Linux) требует своего внешнего вида. Нужно гарантировать, что если создаётся WindowsButton, то и Checkbox будет Windows — никакого смешения типа WindowsButton + MacCheckbox.
Участники
Полный пример кода
Абстрактная фабрика vs Фабричный метод
Абстрактная фабрика в стандартной библиотеке Java