Mediumbuilder

Что такое Builder pattern?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Builder — пошаговое конструирование сложных объектов. Решает проблему telescoping constructor (много параметров, half-filled). Результат immutable.

public class Pizza {
    private final String dough, sauce, topping;

    public static class Builder {
        private String dough, sauce, topping;
        public Builder dough(String d)   { dough = d; return this; }
        public Builder sauce(String s)   { sauce = s; return this; }
        public Builder topping(String t) { topping = t; return this; }
        public Pizza build() { return new Pizza(this); }
    }
    private Pizza(Builder b) { dough = b.dough; sauce = b.sauce; topping = b.topping; }
}

Pizza p = new Pizza.Builder().dough("thin").sauce("tomato").topping("cheese").build();
  • Named parameters в Java (нет встроенных);
  • Валидация в build(); order-independent;
  • Lombok @Builder — auto-generate;
  • Применять при 4+ параметрах, особенно optional (Effective Java Item 2).

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.