Sobes.tech
Назад к вопросам
Junior — Middle
64

Чем отличается использование паттерна фабричный метод от реализации фабрики в Java?

Компании, где спрашивали
IT OneIT One

Ответ от нейросети

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");
        }
    }
}

Таким образом, фабричный метод — это паттерн с наследованием и переопределением метода создания, а фабрика — более общий термин, который может быть реализован разными способами.