Backend Development 2 min read

Using the Builder Pattern to Manage Multiple Constructor Parameters in Java

The article explains how the Builder pattern helps simplify object creation when a class has many required and optional parameters, using Java's HttpClient and HttpRequest examples to demonstrate fluent configuration and reduce constructor overloads.

Cognitive Technology Team
Cognitive Technology Team
Cognitive Technology Team
Using the Builder Pattern to Manage Multiple Constructor Parameters in Java

When a class has many fields, especially with a mix of required and optional ones, traditional constructors can lead to an explosion of overloads, making the API hard to use.

The Builder pattern offers a solution by separating object construction from its representation, allowing a fluent API to set only the needed parameters.

In Java, the HttpClient and HttpRequest classes illustrate this approach; they provide a newBuilder() method that returns a builder where options such as HTTP version, redirect policy, timeout, proxy, and authenticator can be configured before calling build() .

HttpClient client = HttpClient.newBuilder()
    .version(HttpClient.Version.HTTP_1_1)
    .followRedirects(HttpClient.Redirect.NORMAL)
    .connectTimeout(Duration.ofSeconds(20))
    .proxy(ProxySelector.of(new InetSocketAddress("proxy.example.com", 80)))
    .authenticator(Authenticator.getDefault())
    .build();

A simpler usage is creating a client with default settings and building a request via its builder:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("http://foo.com/"))
    .build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
    .thenApply(HttpResponse::body)
    .thenAccept(System.out::println)
    .join();

Thus, the Builder pattern is an effective choice for designing classes that require handling many parameters, especially when many of them are optional.

design patternsJavaBuilder PatternHttpClientobject construction
Cognitive Technology Team
Written by

Cognitive Technology Team

Cognitive Technology Team regularly delivers the latest IT news, original content, programming tutorials and experience sharing, with daily perks awaiting you.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.