Вопрос проверяет знание порождающих паттернов и умение различать схожие архитектурные решения.
Factory — это общий термин для класса или метода, создающего объекты. Factory Method — это конкретный паттерн проектирования. Factory Method выносит логику создания объекта в переопределяемый метод. Это позволяет подклассам решать, какой объект создавать. Таким образом, Factory Method — более формализованный и гибкий подход.
Несмотря на похожие названия, Factory и Factory Method — не одно и то же.
Под Factory часто понимают:
отдельный класс
или утилитный метод
который инкапсулирует создание объектов.
Пример:
User createUser(String type) { ... }
Это удобный, но не формальный паттерн.
Factory Method — это паттерн проектирования из GoF.
Ключевая идея:
базовый класс объявляет фабричный метод
подклассы переопределяют его
создание объектов делегируется наследникам
Пример концепции:
abstract Product createProduct();
Основные различия:
Factory — реализация «по договоренности»
Factory Method — формальный паттерн
Factory Method поддерживает расширяемость через наследование
Factory:
простое создание объектов
нет необходимости в наследовании
Factory Method:
требуется расширяемость
логика создания зависит от контекста
нужно следовать SOLID (Open/Closed)
Вывод: Factory — общее понятие, Factory Method — структурированный паттерн с четкими правилами.