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 подскажет развёрнутый ответ в реальном времени.