The builder pattern is an object creation software design pattern. Unlike the abstract factory pattern and the factory method pattern whose intention is to enable polymorphism, the intention of the builder pattern is to find a solution to the telescoping constructor anti-pattern. The telescoping constructor anti-pattern occurs when the increase of object constructor parameter combination leads to an exponential list of constructors. Instead of using numerous constructors, the builder pattern uses another object, a builder, that receives each initialization parameter step by step and then returns the resulting constructed object at once.
The intent of the Builder design pattern is to separate the construction of a complex object from its representation. By doing so the same construction process can create different representations. 
<![if !supportLists]>· <![endif]>Allows you to vary a product’s internal representation.
<![if !supportLists]>· <![endif]>Encapsulates code for construction and representation.
<![if !supportLists]>· <![endif]>Provides control over steps of construction process.
<![if !supportLists]>· <![endif]>Requires creating a separate ConcreteBuilder for each different type of Product.
Abstract interface for creating objects (product).
Provides implementation for Builder. It is an object able to construct other objects. Constructs and assembles parts to build the objects.
The Director assembles a car instance in the example above, delegating the construction to a separate builder object.