Материал из Википедии — свободной энциклопедии
Название |
абстрактная фабрика |
Английское название |
abstract factory |
Тип |
порождающий |
Назначение |
Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов |
Применяется в случаях |
- система не должна зависеть от того, как создаются, компонуются и представляются входящие в нее объекты;
- входящие в семейство взаимосвязанные объекты должны использоваться вместе и вам необходимо обеспечить выполнение этого ограничения;
- система должна конфигурироваться одним из семейств составляющих ее объектов;
- требуется предоставить библиотеку объектов, раскрывая только их интерфейсы, но не реализацию.
|
Плюсы |
- изолирует конкретные классы;
- упрощает замену семейств продуктов;
- гарантирует сочетаемость продуктов.
|
Минусы |
- поддержать новый вид продуктов трудно.
|
Родственные шаблоны |
фабричный метод, одиночка, строитель, прототип |
Абстрактная фабрика — шаблон проектирования, позволяющий изменять поведение системы, варьируя создаваемые объекты, при этом сохраняя интерфейсы. Он позволяет создавать целые группы взаимосвязанных объектов, которые, будучи созданными одной фабрикой, реализуют общее поведение. Паттерн реализуется созданием абстрактного класса Factory, который представляет собой интерфейс для создания компонентов системы (например, для оконного интерфейса, он может создавать окна и кнопки). Затем пишутся наследующиеся от него классы, реализующие этот интерфейс.
Abstract factory UML class diagram