Q73: How does the Builder Pattern solve telescoping constructor anti-patterns?
When a class contains numerous optional parameters, traditional constructors lead to confusing 'telescoping' parameter list overloads. The Builder Pattern provides a fluent inner builder class step-by-step parameter setting, enforcing parameter validation and producing clean immutable objects.
Builder Pattern Implementation
public class HttpRequest {
private final String url;
private final String method;
private final int timeout;
private HttpRequest(Builder b) {
this.url = b.url;
this.method = b.method;
this.timeout = b.timeout;
}
public static class Builder {
private String url;
private String method = "GET"; // Default
private int timeout = 5000;
public Builder(String url) { this.url = url; }
public Builder method(String m) { this.method = m; return this; }
public Builder timeout(int t) { this.timeout = t; return this; }
public HttpRequest build() { return new HttpRequest(this); }
}
}💡 Fluent builder sets optional parameters and creates immutable HttpRequest objects.
Key Takeaways
- Eliminates telescoping constructor overloads.
- Constructs validated immutable objects using fluent method chaining.
Knowledge Check
What primary problem does the Builder Pattern address during object creation?