Назад к вопросам
Junior — Middle
58
Можешь привести примеры применения паттерна Builder в Java и объяснить его особенности?
Ответ от нейросети
sobes.tech AI
Паттерн Builder в Java используется для поэтапного создания сложных объектов с множеством параметров, особенно когда конструктор с большим числом аргументов неудобен или приводит к ошибкам.
Особенности:
- Позволяет создавать объекты с разными конфигурациями, избегая большого количества конструкторов.
- Улучшает читаемость кода за счёт цепочки вызовов.
- Часто реализуется как статический вложенный класс внутри создаваемого класса.
Пример:
public class User {
private final String firstName; // обязательный
private final String lastName; // обязательный
private final int age; // необязательный
private final String phone; // необязательный
private final String address; // необязательный
private User(UserBuilder builder) {
this.firstName = builder.firstName;
this.lastName = builder.lastName;
this.age = builder.age;
this.phone = builder.phone;
this.address = builder.address;
}
public static class UserBuilder {
private final String firstName;
private final String lastName;
private int age;
private String phone;
private String address;
public UserBuilder(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public UserBuilder age(int age) {
this.age = age;
return this;
}
public UserBuilder phone(String phone) {
this.phone = phone;
return this;
}
public UserBuilder address(String address) {
this.address = address;
return this;
}
public User build() {
return new User(this);
}
}
}
// Использование:
User user = new User.UserBuilder("Иван", "Иванов")
.age(30)
.phone("123456789")
.build();
Такой подход делает код создания объекта гибким и понятным.