Встречается на собеседованиях • сегодня

В чем разница между паттернами Builder и Factory

Builder и Factory оба являются порождающими паттернами, но решают разные задачи:

Factory создаёт объекты, скрывая логику инстанцирования. Клиент получает готовый объект через фабричный метод, не зная деталей реализации. Пример:

java
interface Shape {
    void draw();
}
class Circle implements Shape { /*...*/ }
class ShapeFactory {
    public Shape createShape(String type) {
        return switch(type) {
            case "CIRCLE" -> new Circle();
            default -> throw new IllegalArgumentException();
        };
    }
}

Builder поэтапно конструирует сложные объекты, позволяя создавать разные конфигурации. Особенно полезен при множестве параметров:

java
class Pizza {
    private String dough, sauce, topping;
    // Builder
    static class Builder {
        private String dough, sauce, topping;
        Builder setDough(String d) { this.dough = d; return this; }
        // другие сеттеры...
        Pizza build() { return new Pizza(this); }
    }
    private Pizza(Builder b) { /* инициализация */ }
}

Ключевое отличие: Factory возвращает готовый объект сразу, Builder позволяет гибко настраивать объект шаг за шагом. Factory проще, Builder мощнее для сложных объектов.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы