A telescoping constructor handles optional data by adding overloaded constructors for different parameter combinations. It starts clearly enough with a few variants, but becomes unreadable and difficult to maintain as fields accumulate. section 4.1.2
Why it becomes fragile
A Person object with ten fields can require arguments such as null, null, 38000, "France", and several integers. The call hides what each value means and depends on exact parameter order. Supporting every combination could require up to 1,024 constructors, while some combinations cannot coexist or share a signature. section 4.1.2
public Person(String firstname) { ... }
public Person(String firstname, String lastname) { ... }
public Person(String firstname, String lastname, String town) { ... }
Compare progressively longer overloaded Person constructors and see how the pattern expands. section 4.1.2
The Builder pattern is the practical alternative: callers name only the values they need, producing more readable and flexible construction. In Java, Lombok can generate builder support with @Builder, reducing manual boilerplate. section 4.1.2
