Benefits:
It permits you to vary an object’s internal representation.
It isolates the code for construction and representation.
It provides finer control over the construction process.
Applicable Scenarios:
The algorithm for creating a complex object needs to be independent of the components that compose the object and how they are assembled.
The construction process is to allow different representations of the constructed object.