Абстрактная фабрика () — порождающий шаблон проектирования, предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов. Шаблон реализуется созданием абстрактного класса Factory, который представляет собой интерфейс для создания компонентов системы (например, для оконного интерфейса он может создавать окна и кнопки). Затем пишутся классы, реализующие этот интерфейс. Назначение Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов.
Реализация
Плюсы изолирует конкретные классы; упрощает замену семейств продуктов; гарантирует сочетаемость продуктов.
Минусы сложно добавить поддержку нового вида продуктов.
Применение Система не должна зависеть от того, как создаются, компонуются и представляются входящие в неё объекты. Входящие в семейство взаимосвязанные объекты должны использоваться вместе и вам необходимо обеспечить выполнение этого ограничения. Система должна конфигурироваться одним из семейств составляющих её объектов. Требуется предоставить библиотеку объектов, раскрывая только их интерфейсы, но не реализацию.
Примеры
Пример на Kotlin
Пример на Swift
Пример на C#
Пример на Java
Пример на PHP5
Пример на Python
Пример на Scala
Пример на Go
Пример на Ruby
Литература (также ISBN 5-272-00355-1)
Ссылки Паттерн Abstract Factory (абстрактная фабрика) — назначение, описание, реализация на C++, достоинства и недостатки
Примечания
Категория:Шаблоны проектирования Категория:Статьи с примерами кода Ruby