Builder pattern builds complex objects from simple objects step-by-step.
The Builder pattern suggests moving the construction logic out of the object class to a separate class referred to as a builder class. There can be more than one such builder classes each with different implementation for the series of steps to construct the object. Each such builder implementation results in a different representation of the object.
In terms of implementation, each of the different steps in the construction process can be declared as methods of a common interface to be implemented by different concrete builders.
Concrete builders create different TYPES of product. Each concrete builder has its own specific steps for creating one type of the product. A collection of concrete builders do not construct the product. Concrete builders are independent.
To keep the client away from dealing with the methods constituting the object construction process and encapsulate the details of how the object is constructed this pattern uses a Director.
Director is responsible for invoking different builder methods required for the construction of the final object. Different client objects can make use of the Director object to create the required object.

As a non-software example imagine Pizza as product, PizzaBuilder interface as builder, chef as director and different types of pizza builders as concrete builders implementing PizzaBuilder.





