Often, design start out using Factory method( less complicated,
more customizable, subclasses proliferate) and evolve toward Abstract
Factory, Prototype, or Builder( more flexible, more complex) as the
designer discovers where more flexibbility is needed.
Sometimes creational patterns are complementary: Builder can use one
of the other patterns to implement with components get build.