Factory — паттерн, инкапсулирующий логику создания объектов. Вместо new ConcreteClass() по всему коду — вызов фабрики, которая сама решает, какой класс инстанцировать. Клиентский код не знает, как создаётся объект.
Варианты
Simple Factory — статический метод, возвращающий нужный объект на основе параметра
Factory Method — базовый класс определяет интерфейс создания; подклассы переопределяют конкретную реализацию
Abstract Factory — фабрика фабрик: создаёт семейства связанных объектов
Когда полезен
Тип объекта зависит от runtime-условий или конфигурации
Нужно изолировать сложную логику инициализации в одном месте
Легко заменить реализацию без изменений в клиентском коде