Фабричный метод — это порождающий паттерн проектирования, который определяет интерфейс для создания объекта, но позволяет подклассам решать, какой класс инстанциировать. Вместо прямого вызова конструктора через new вы вызываете фабричный метод — а подкласс определяет конкретный тип.
Проблема, которую он решает
Представьте, что вы разрабатываете логистическое приложение. Изначально оно работает только с грузовиками. Вы хардкодите new Truck() везде. Затем бизнес требует морскую доставку. Теперь нужно менять каждое место создания транспорта. Фабричный метод позволяет изолировать логику создания: добавление нового типа транспорта требует лишь нового подкласса.
Структура
Пример кода
Пошагово: что происходит во время выполнения
Когда применять Фабричный метод
Фабричный метод в стандартной библиотеке Java