Junior — Middle
¿Qué diferencias existen entre instanciar un objeto directamente y usar el patrón Builder para crearlo?
sobes.tech AI
Respuesta de la IA
La instanciación de un objeto se realiza directamente mediante la llamada al constructor, por ejemplo, new ClassName(). Es una forma sencilla y rápida de crear un objeto cuando todos los parámetros necesarios son conocidos y el objeto no es demasiado complejo.
El patrón Builder se utiliza para crear objetos complejos con múltiples parámetros, especialmente si algunos de ellos son opcionales o tienen valores predeterminados. Builder permite configurar el objeto paso a paso, mejorando la legibilidad y mantenibilidad del código.
Diferencias:
- Creación directa: rápida, pero puede resultar en constructores largos con muchos parámetros.
- Builder: más flexible, mejora la legibilidad, facilita la creación de objetos con múltiples parámetros opcionales.
Ejemplo de Builder en Java:
public class User {
private String name;
private int age;
private String address;
private User(UserBuilder builder) {
this.name = builder.name;
this.age = builder.age;
this.address = builder.address;
}
public static class UserBuilder {
private String name;
private int age;
private String address;
public UserBuilder setName(String name) {
this.name = name;
return this;
}
public UserBuilder setAge(int age) {
this.age = age;
return this;
}
public UserBuilder setAddress(String address) {
this.address = address;
return this;
}
public User build() {
return new User(this);
}
}
}
// Uso:
User user = new User.UserBuilder()
.setName("Иван")
.setAge(30)
.build();