Smart factory methods.
We can't anticipate the types of the objects we wish to create at runtime.
The Prototype Pattern is like the factory method pattern. Instead of an abstract factory method a concrete factory method builds products based on product descriptions such as class names.
The basic idea is simple, although it sounds complicated. A Product base class maintains a static table that associates product descriptions with product prototypes. The factory method merely searches the table for a prototype. It then asks the prototype to clone itself and returns the clone.