Русская Википедия:Абстрактная фабрика (шаблон проектирования)

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Шаблон проектирования Абстрактная фабрика (Шаблон:Lang-en) — порождающий шаблон проектирования, предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов. Шаблон реализуется созданием абстрактного класса Factory, который представляет собой интерфейс для создания компонентов системы (например, для оконного интерфейса он может создавать окна и кнопки). Затем пишутся классы, реализующие этот интерфейс[1].

Назначение

Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов.

Реализация

Файл:Abstract factory UML.svg

Плюсы

  • изолирует конкретные классы;
  • упрощает замену семейств продуктов;
  • гарантирует сочетаемость продуктов.

Минусы

  • сложно добавить поддержку нового вида продуктов.

Применение

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

Примеры

Пример на Swift

Шаблон:Hider hiding

Пример на C#[2]

Шаблон:Hider hiding

Пример на Java

Шаблон:Hider hiding

Пример на PHP5

Шаблон:Hider hiding

Пример на Python

Шаблон:Hider hiding

Пример на Scala

Шаблон:Hider hiding

Пример на Go

Шаблон:Hider hiding

Пример на Ruby

Шаблон:Hider hiding

Литература

Ссылки

Примечания

Шаблон:Примечания

Шаблон:Типы шаблонов проектирования