Абстрактная фабрика (Abstract Factory, Factory), др. название Инструментарий (Kit) - GoF
| Проблема | Создать семейство взаимосвязанных или взаимозависимых обьектов (не специфицируя их конкретных классов). |
| Решение | Создать абстрактный класс, в котором объявлен интерфейс для создания конкретных классов. |
| Пример | Какой класс должен отвечать за создание обьектов - адаптеров при использовании паттерна "Адаптер", см. . Если подобные объекты создаются неким объектом уровня предметной области, то будет нарушен принцип разделения обязанностей. |
| Преимущества | Изолирует конкретные классы. Поскольку "Абстрактная фабрика" инкапсулирует ответственность за создание классов и сам процесс их создания, то она изолирует клиента от деталей реализации классов. Упрощена замена "Абстрактной фабрики", поскольку она используется в приложении только один раз при инстанцировании. |
| Недостатки | Интерфейс "Абстрактной фабрики" фиксирует набор обьектов, которые можно создать. Расширение "Абстрактной фабрики" для изготовления новых обьектов часто затруднительно. |