The Builder design pattern solves problems like:
How can a class (the same construction process)
create different representations
of a complex object?
See Applicability section for all problems Builder can solve.
See Solution section for how Builder solves the problems.
new ProductA1(),
add to complex object, new ProductB1(), add to complex object, …)
directly within a class
(Client).
ProductA1, ProductB1),
which makes it impossible to create a different representation
(ProductA2, ProductB2, for example)
independently from (without having to change)
the class.