The builder pattern
The builder software design pattern is an object creation one. It's a great building block for classes with optional fields. It provides a maintainable and readable way to instantiate immutable classes with more than 3 or 4 fields. It greatly reduces the time developers needs to understand how to instantiate the class properly.
You have surely faced one day or another a code similar to the one below.
public class Person {
private final String firstname;
private final String lastname;
private final String address;
private final String zipCode;
public Person(final String firstname, final String lastname) {
this(firstname, lastname, "");
}
public Person(final String firstname, final String lastname, final String address) {
this(firstname, lastname, address, "");
}
public Person(final String firstname, final String lastname, final String address, final String zipCode) {
this.firstname = Preconditions.nonNull(firstname);
this.lastname = Preconditions.nonNull(lastname);
this.address = Preconditions.nonNull(address);
this.zipCode = Preconditions.nonNull(zipCode);
}
}

