Define a factory of immutable content with separated builder and factory interfaces.
Use the Factory Kit pattern when
- a class can't anticipate the class of objects it must create
- you just want a new instance of a custom builder instead of the global one
- you explicitly want to define types of objects, that factory can build
- you want a separated builder and creator interface