Builder

The builder pattern, as name implies, is an alternative way to construct complex objects. This pattern should be used when we want to build different immutable objects using the same object building process.