Описание тега abstract-factory

Абстрактная фабрика - это творческий шаблон дизайна, опубликованный Бандой четырех. Его цель - "предоставить интерфейс для создания семейств связанных или зависимых объектов без указания их конкретных классов". (стр. 87) Обратите внимание, что [factory-method] - это отдельный шаблон GoF, и есть дополнительные [factory] шаблоны за пределами GoF.

Шаблон "Абстрактная фабрика" применяет тему к группе связанных объектов. Канонический пример из книги GoF - это стандарт внешнего вида, применяемый для группы виджетов GUI. Его реализуют пять участников. (стр.89)

  • AbstractFactory (например, WidgetFactory) - объявляет интерфейс для операций, которые создают AbstractProduct объекты.
  • ConcreteFactory (например, MotifWidgetFactory, PMWidgetFactory) - реализует операции для создания ConcreteProduct объекты.
  • AbstractProduct (например, Window, ScrollBar) - объявляет интерфейс для типа объекта продукта.
  • ConcreteProduct (например, MotifWindow, MotifScrollBar) - определяет объект продукта, который должен быть создан соответствующим ConcreteFactory и реализует AbstractProduct интерфейс.
  • Клиент - использует только интерфейсы, объявленные AbstractFactory а также AbstractProduct классы.

" Банда четырех" предлагает следующие критерии для применения паттерна "Абстрактная фабрика". (стр.88)

Используйте шаблон абстрактной фабрики, когда

  • система не должна зависеть от того, как создаются, составляются и представляются ее продукты.
  • система должна быть сконфигурирована с использованием одного из нескольких семейств продуктов.
  • семейство связанных объектов продукта разработано для совместного использования, и вам необходимо обеспечить соблюдение этого ограничения.
  • вы хотите предоставить библиотеку классов продуктов, и вы хотите раскрыть только их интерфейсы, а не их реализации.

Этот шаблон имеет следующие последствия. (стр.89)

  • Он изолирует конкретные классы.
  • Это упрощает обмен семействами продуктов.
  • Это способствует единообразию продуктов.
  • Сложно поддерживать новые виды продукции.

См. Более подробную информацию о книге GoF в Абстрактной фабрике.

Обратите внимание, что "Банда четырех" опубликовала два разных фабричных шаблона, второй из которых - фабричный метод. Кроме того, есть фабричные паттерны вне книги GoF, поэтому термин "фабрика" сам по себе неоднозначен.