Чем отличается использование паттерна фабричный метод от реализации фабрики в Java?
Ответ от нейросети
sobes.tech AI
Паттерн "Фабричный метод" — это шаблон проектирования, который определяет интерфейс для создания объекта, но позволяет подклассам решать, какой класс инстанцировать. Он используется для делегирования создания объектов подклассам, обеспечивая гибкость и расширяемость.
Реализация фабрики в Java может быть как конкретным классом с методами для создания объектов (например, класс Factory с методом createProduct()), так и использованием паттерна фабричного метода. Главное отличие в том, что фабричный метод — это именно паттерн с определённой структурой (интерфейс или абстрактный класс с фабричным методом), а "фабрика" в Java может быть просто утилитарным классом для создания объектов без строгого следования паттерну.
Пример фабричного метода:
abstract class Creator {
abstract Product factoryMethod();
void someOperation() {
Product product = factoryMethod();
// работа с продуктом
}
}
class ConcreteCreator extends Creator {
@Override
Product factoryMethod() {
return new ConcreteProduct();
}
}
Пример простой фабрики:
class SimpleFactory {
static Product createProduct(String type) {
switch(type) {
case "A": return new ProductA();
case "B": return new ProductB();
default: throw new IllegalArgumentException("Unknown type");
}
}
}
Таким образом, фабричный метод — это паттерн с наследованием и переопределением метода создания, а фабрика — более общий термин, который может быть реализован разными способами.