Separate the construction of a complex object from its representation so
that the same construction process can ceatae different representations.
- Need to isolate knowledge of the creation of a complex object from its parts
- Need to allow different implementations/interfaces of an object's parts
- Lets you vary a product's internal representation
- Isolates code for construction and representation
- Finer control over the construction process