The Factory Method design pattern solves problems like:
How can an object be created
so that subclasses can redefine which class to instantiate?
How can a class defer instantiation to subclasses?
See Applicability section for all problems Factory Method can solve.
See Solution section for how Factory Method solves the problems.
new Product1())
directly within
the class (Creator|operation())
that requires (uses) the object.