From Joshua Bloch book: Effective Java
Item 02: Consider a builder when faced with many constructor parameters
Blueprint
1) Use parallel hierarchies of builders each nested in the corresponding class
a) Abstract classes have abstract builders
b) Concrete builders have concrete builders
2) Abstract classes must contain an abstract "self()" function to force each subclass' builder to return itself
3) Must use PECS (Producer Extends Consumer Super) - Generic Wildcards to use a recursive type parameter in the abstract builder.
4) Bottom-level (sub-type) builders are structures as shown on my other video about Builder Pattern.